使用DataAdapter批量更新的问题

发布于 2024-07-14 16:12:42 字数 942 浏览 6 评论 0原文

我正在使用批量更新来更新 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();

但数据未更新。我无法找出问题所在。感谢任何帮助。

I am updating the sql server 2005 database using batch update, as shown below

 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();

But the data is not updated.I am unable to figure out what is the problem.Any help is appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凌乱心跳 2024-07-21 16:12:42

我建议您在发出更新命令之前查看 dt。 确保某些行的 RowState 为“已更新”或“已添加”。 如果没有,您的(我假设)数据表中没有任何内容可以更新到数据库。

另外,尝试删除 .SourceVersion 属性设置操作。

如果一切看起来都不错,请在发出 .Update 之前开始对数据库进行跟踪。

这些只是尝试的几个第一步。

I would suggest that you look at the dt right before you issue the update command. Make sure there are some rows that have RowState of Updated or Added. If not, there's nothing in your (I'm assuming) DataTable to update to the database.

Also, try removing the .SourceVersion property set operation.

If everything looks good, start a trace on the database right before you issue the .Update.

These are just a couple first steps to try.

无法言说的痛 2024-07-21 16:12:42

使用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);                   
}

}

SqlDataAdapter approach

using (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);                   
}

}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文