欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

快速插入大量数据的asp.net代码(Sqlserver)

程序员文章站 2023-12-10 15:42:16
复制代码 代码如下: using system.data; using system.diagnostics; using system.data.sqlclient;  ...
复制代码 代码如下:

using system.data;
using system.diagnostics;
using system.data.sqlclient;
   
string connectionstring = "data source=hg-j3ejj9lsw5py;initial catalog=test;user id=sa;password=hg";
datatable datatable = sql_.select_datagrid(" select a from large where 1=0 ").tables[0];
string passportkey;
for (int i = 0; i < 100000; i++)
{
passportkey = guid.newguid().tostring();
datarow datarow = datatable.newrow();
datarow[0] = passportkey;
datatable.rows.add(datarow);
}
sqlconnection sqlconnection = new sqlconnection(connectionstring);
sqlconnection.open();
sqltransaction sqltran = sqlconnection.begintransaction();
sqlbulkcopy sqlbulkcopy = new sqlbulkcopy(sqlconnection, sqlbulkcopyoptions.keepidentity, sqltran);
sqlbulkcopy.destinationtablename = "large";
sqlbulkcopy.batchsize = datatable.rows.count;
if (datatable != null && datatable.rows.count != 0)
{
sqlbulkcopy.writetoserver(datatable);
}
sqlbulkcopy.close();
sqltran.rollback();
sqlconnection.close();

注解: <1> sqlbulkcopy.destinationtablename = "large"; large 指的是目标表的名称
<2> datatable 的结构要和数据库中的表的结构相同
(datatable的列不能多于数据库里面的)
(datatable的列可以少于数据库里面的 如果数据库这一列有默认值的话)
<3> 这里面 我使用了事务 您在使用的时候 也可以不用事务