C# sql server 批量插入sqlbullcopy类
在程序中,数据库插入数据无非就是逐条和批量。
逐条:如果需要批量插入时,使用逐条效率就很差了(因为每次都需要创建数据库连接,打开数据库,关闭数据库.)
使用sqlbullcopy批量:在程序中定义一个DataTable,把需要插入的数据存储在DataTable中,注意:“DataTable中的列需与数据库中保持一致,即使是自增字段也要在DataTable中有对应的列。”
//数据库连接
string Connstr = "Data Source=127.0.0.1;Initial Catalog=LocalDB;Persist Security Info=True;User ID=sa;Password=sa123;";
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Password", Type.GetType("System.String"));
dt.Columns.Add("AddTime", typeof(DateTime));
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 10000; i++)
{
dt.Rows.Add(null, "name" + i, "pw" + i, DateTime.Now);
}
using (SqlConnection conn = new SqlConnection(Connstr))
{
SqlBulkCopy bulkCopy = new SqlBulkCopy(conn);
bulkCopy.DestinationTableName = "TestTable";
bulkCopy.BatchSize = dt.Rows.Count;
conn.Open();
if (dt != null && dt.Rows.Count != 0)
{
bulkCopy.WriteToServer(dt);
}
}
sw.Stop();
TimeSpan ts = sw.Elapsed;
Console.WriteLine(ts.TotalMilliseconds);
Console.ReadKey();