C# SqlBulkCopy批量向数据库添加数据

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)
    {
    }
}

猜你喜欢

转载自blog.csdn.net/kingcruel/article/details/78740377