有没有办法使用存储过程并将System.Data.DataTable作为参数传递来批量插入C#中的数据表到SQL Server表中?
该表不会有固定数量的记录。
该表不会有固定数量的记录。
是的,有一种方法:
DataTable dataTable = null; // your data needs to be here
try
{
ConnectionStringSettings mConString = ConfigurationManager.ConnectionStrings["SiteSqlServer"];
// Optional truncating old table
using (SqlConnection connection = new SqlConnection(mConString.ConnectionString))
{
connection.Open();
// Delete old entries
SqlCommand truncate = new SqlCommand("TRUNCATE TABLE MYTABLE", connection);
truncate.ExecuteNonQuery();
}
SqlBulkCopy bulkCopy = new SqlBulkCopy(mConString.ConnectionString, SqlBulkCopyOptions.TableLock)
{
DestinationTableName = "dbo.MYTABLE",
BatchSize = 100000,
BulkCopyTimeout = 360
};
bulkCopy.WriteToServer(dataTable);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
DataTable
作为 存储过程参数
(用户定义的表类型)进行传递。但是你会失去 SqlBulkCopy
的 EnableStreaming
特性优势。 - Muflix