4

我的数据表中有 1000 行,dt我想一次性将所有这些数据插入到我的 sql 表中。我知道如何使用 for 循环来做到这一点。但我想知道有没有其他更好的方法来完成这一切单发到数据库的行。我当前插入此数据的代码是这样的

 DataTable dt = result.Tables[0];


        SqlHelper.ExecuteScalar(GlobalSettings.DbDSN, CommandType.Text,
                                  "INSERT INTO tbl_Projects (Project,Owner,Consultant ,Contractor,Value ,Level1,Level2 ,Status  ,Country ,CreatedDate  ,CreatedByID ,CreatedByName) VALUES (@Project,@Owner,@Consultant ,@Contractor,@Value ,@Level1,@Level2 ,@Status  ,@Country ,@CreatedDate  ,@CreatedByID ,@CreatedByName)",
                                  new SqlParameter("@Project",dt.Rows[0].ItemArray[0]),
                                  new SqlParameter("@Owner", dt.Rows[0].ItemArray[1]),
                                  new SqlParameter("@Consultant", dt.Rows[0].ItemArray[2]),
                                  new SqlParameter("@Contractor", dt.Rows[0].ItemArray[3]),
                                  new SqlParameter("@Value", dt.Rows[0].ItemArray[4]),
                                  new SqlParameter("@Level1", dt.Rows[0].ItemArray[5]),
                                  new SqlParameter("@Level2", dt.Rows[0].ItemArray[6]),
                                  new SqlParameter("@Status", dt.Rows[0].ItemArray[7]),
                                  new SqlParameter("@Country", dt.Rows[0].ItemArray[8]),
                                  new SqlParameter("@CreatedDate", System.DateTime.Now),
                                  new SqlParameter("@CreatedByID", ""),
                                  new SqlParameter("@CreatedByName", ""));

任何人都可以帮我解决这个问题..

4

3 回答 3

2

您可以通过利用SqlBulkCopy类来做到这一点。简而言之,SqlConnection创建并打开一个,然后使用此代码将其从DataTable服务器批量复制。

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn))
{
    bulkCopy.DestinationTableName = "tbl_Projects";
    bulkCopy.WriteToServer(dt);
}
于 2013-07-18T12:17:54.287 回答
1

您还可以使用表类型参数并将整个数据集从 C# 传递到 SQL Server。

看到这个问题:INSERT using LIST into Stored Procedure

于 2013-07-18T12:20:00.550 回答
0

使用 C#SqlBulkCopy bulkcopy = new SqlBulkCopy(con)

一次可以插入 10 行

   DataTable dt = new DataTable();
        dt.Columns.Add("a");
        dt.Columns.Add("b");
        dt.Columns.Add("c");
        dt.Columns.Add("d");
        for (int i = 0; i < 10; i++)
        {
            DataRow dr = dt.NewRow();
            dr["a"] = 1;
            dr["b"] = 2;
            dr["c"] = "Charan";
            dr["d"] = 4;
            dt.Rows.Add(dr);
        }
        SqlConnection con = new SqlConnection("Connection String");
        using (SqlBulkCopy bulkcopy = new SqlBulkCopy(con))
        {
            con.Open();
            bulkcopy.DestinationTableName = "Sample";
            bulkcopy.WriteToServer(dt);
            con.Close();
        }
于 2014-12-24T12:34:20.490 回答