public ActionResult SqlBulkTest()
{
DataTable dt = GetTableSchema();
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
for (int i = 0; i <= 10; i++)
{
DataRow dr = dt.NewRow();
dr[0] = "Title" + i.ToString() + "-" + time;
dr[1] = "Keyword" + i.ToString() + "-" + time;
dr[2] = "Description" + i.ToString() + "-" + time;
dr[3] = "Introduction" + i.ToString() + "-" + time;
dr[4] = "ContentText" + i.ToString() + "-" + time;
dt.Rows.Add(dr);
}
BulkToDB(dt);
return View();
}
public DataTable GetTableSchema()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] {
//new DataColumn("Id",typeof(string)),//主键列,不用赋值
new DataColumn("Title",typeof(string)),
new DataColumn("Keyword",typeof(string)),
new DataColumn("Description",typeof(string)),
new DataColumn("Introduction",typeof(string)),
new DataColumn("ContentText",typeof(string))});
return dt;
}
public void BulkToDB(DataTable dt)
{
try
{
string dbConnectionStr = ConfigurationManager.ConnectionStrings["SqlConnection"].ConnectionString;
if (dt != null && dt.Rows.Count != 0)
{
using (SqlConnection conn = new SqlConnection(dbConnectionStr))
{
SqlBulkCopy bulkCopy = new SqlBulkCopy(conn);
bulkCopy.DestinationTableName = "AboutUs";//表名
///ColumnMappings官方说明:列映射“定义数据源中的列”和“目标表中的列”之间的关系
///自己理解:第一个参数是GetTableSchema方法中定义的列顺序,第二个参数是数据库中列的顺序
bulkCopy.ColumnMappings.Add(0, 1); //Title
bulkCopy.ColumnMappings.Add(1, 2); //Keyword
bulkCopy.ColumnMappings.Add(2, 3); //Description
bulkCopy.ColumnMappings.Add(3, 4); //Introduction
bulkCopy.ColumnMappings.Add(4, 5); //ContentText
bulkCopy.BatchSize = dt.Rows.Count;
conn.Open();
bulkCopy.WriteToServer(dt);
}
}
}
catch (Exception ex)
{
}
}