一尘不染

如何通过C#代码在Sql中执行批处理更新

sql

我想更新多个行,如下所示

update mytable set s_id = {0} where id = {1}

(这里s_id是根据一些复杂的逻辑进行评估的)。
出于性能原因,应分批进行更新。有什么方法可以批处理更新语句并通过单个execute语句执行批处理?我知道在JAVA中我们可以通过JDBC做到这一点。C#中有类似的方法吗?

提前致谢


阅读 191

收藏
2021-03-17

共1个答案

一尘不染

是的,您可以使用SqlDataAdapter

SqlDataAdapter具有InsertCommandUpdateCommand属性,使用它们可以分别指定用于向数据库中插入新行的SQLCommand和用于更新数据库中的行的SqlCommand。

然后,您可以将DataTable传递给dataadapter的Update方法,它将把语句批处理到服务器-
对于DataTable中的新行,它执行INSERT命令,对于已修改的行,它执行UPDATE命令。

您可以使用UpdateBatchSize属性定义批处理大小。

这种方法允许您处理大量数据,并允许您以不同的方式很好地处理错误,即,如果特定更新遇到错误,则可以告诉它不要抛出异常,而继续处理其余的错误通过设置ContinueUpdateOnError属性来更新。

2021-03-17