我想更新多个行,如下所示
update mytable set s_id = {0} where id = {1}
(这里s_id是根据一些复杂的逻辑进行评估的)。 出于性能原因,应分批进行更新。有什么方法可以批处理更新语句并通过单个execute语句执行批处理?我知道在JAVA中我们可以通过JDBC做到这一点。C#中有类似的方法吗?
s_id
提前致谢
是的,您可以使用SqlDataAdapter。
SqlDataAdapter具有InsertCommand和UpdateCommand属性,使用它们可以分别指定用于向数据库中插入新行的SQLCommand和用于更新数据库中的行的SqlCommand。
然后,您可以将DataTable传递给dataadapter的Update方法,它将把语句批处理到服务器- 对于DataTable中的新行,它执行INSERT命令,对于已修改的行,它执行UPDATE命令。
您可以使用UpdateBatchSize属性定义批处理大小。
这种方法允许您处理大量数据,并允许您以不同的方式很好地处理错误,即,如果特定更新遇到错误,则可以告诉它不要抛出异常,而继续处理其余的错误通过设置ContinueUpdateOnError属性来更新。