我的数据表dt
中有1000行,我希望一次性将所有这些数据插入到我的sql表中。我知道如何使用for循环执行此操作..但我不知道是否存在任何其他更好的方法来一次性完成所有行到datatbase。
我当前插入此数据的代码是这样的
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", ""));
任何人都可以帮我解决这个问题。
答案 0 :(得分:2)
您可以通过利用SqlBulkCopy
课程来完成此操作。简而言之,创建并打开SqlConnection
,然后使用此代码将其从DataTable
批量复制到服务器。
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn))
{
bulkCopy.DestinationTableName = "tbl_Projects";
bulkCopy.WriteToServer(dt);
}
答案 1 :(得分:1)
您还可以使用表类型参数并将整个数据集从C#传递到SQL Server。
答案 2 :(得分: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();
}