我正在使用批量更新更新sql server 2005数据库,如下所示
cmd = new SqlCommand("update Table1 set column1 = @column1 where EmpNo = @EmpNo", con);
cmd.Parameters.Add(new SqlParameter("@column1", SqlDbType.VarChar));
cmd.Parameters["@column1"].SourceVersion = DataRowVersion.Current;
cmd.Parameters["@column1"].SourceColumn = "Column";
cmd.Parameters.Add(new SqlParameter("@EmpNo", SqlDbType.Int));
cmd.Parameters["@EmpNo"].SourceVersion = DataRowVersion.Current;
cmd.Parameters["@EmpNo"].SourceColumn = "EmpNo";
cmd.UpdatedRowSource = UpdateRowSource.None;
sqlDa = new SqlDataAdapter();
con.Open();
sqlDa.UpdateCommand =cmd;
sqlDa.UpdateBatchSize = 10;
sqlDa.Update(dt);
con.Close();
但是数据没有更新。我无法弄清楚是什么问题。感谢任何帮助。
答案 0 :(得分:1)
我建议您在发出更新命令之前查看dt。确保有一些RowState为Updated或Added的行。如果没有,您(我假设)DataTable中没有任何内容可以更新到数据库。
另外,请尝试删除.SourceVersion属性集操作。
如果一切正常,请在发出.Update之前在数据库上启动跟踪。
这些只是尝试的第一步。
答案 1 :(得分:0)
SqlDataAdapter方法
使用(SqlCommand insertCommand = new SqlCommand(
" INSERT BulkLoadTable(FieldA,FieldB)VALUES(@ FieldA,@ FieldB)",connection))
{ insertCommand.Parameters.Add(" @ FieldA",SqlDbType.VarChar,10," FieldA");
insertCommand.Parameters.Add("@FieldB", SqlDbType.Int, 4, "FieldB");
// Setting UpdatedRowSource is important if you want to batch up the inserts
insertCommand.UpdatedRowSource = UpdateRowSource.None;
using (SqlDataAdapter insertAdapter = new SqlDataAdapter())
{
insertAdapter.InsertCommand = insertCommand;
// How many records to send to the database in one go (all of them)
insertAdapter.UpdateBatchSize = myDataTable.Rows.Count;
// Send the inserts to the database
insertAdapter.Update(myDataTable);
}
}