0

DataAdapter 有一个 ContinueUpdateOnError 属性,您可以将其设置为“True”,这将继续处理 DataAdapter.Update 命令,即使遇到错误也是如此。这是理想的,所以我可以在每行无法插入的数据中捕获错误。但是,这仅在批处理关闭 (DataAdapter.UpdateBatchSize = 1) 时才能正常工作。

如果 DataAdapter.UpdateBatchSize 设置为 0 或其他将打开批处理的数字,并且批处理记录中发生错误,则整个批处理将无法更新。显然,这不是我想要发生的。

理想情况下,我想混合使用这两种情况。我希望能够使用批处理,从而在插入行时减少到数据库的往返次数,但同时我希望能够在每个单独的行错误发生时捕获它(这对于打开批处理时某些原因不起作用,并且 ContinueUpdateOnError 设置为“True”)。对我来说,它看起来必须是一种或另一种方式。我要么单独插入每一行,并为每个插入访问数据库,并能够捕获每一行错误,要么我尝试将批次发送到服务器,如果批次中的一行失败,那么整个批次都会失败。

有什么想法吗?

4

1 回答 1

0

从 MSDN 的页面“DataAdapter.ContinueUpdateOnError 属性”:

如果 ContinueUpdateOnError 设置为 true,则在更新行期间发生错误时不会引发异常。跳过行的更新,将错误信息放在出错行的 RowError 属性中。DataAdapter 继续更新后续行。

并从 MSDN 的页面“使用 DataAdapters (ADO.NET) 执行批处理操作”:

批处理执行与执行每个单独的语句具有相同的效果。语句按照将语句添加到批处理中的顺序执行。批处理模式中错误的处理方式与禁用批处理模式时的处理方式相同。

所以要么你做错了什么,要么微软的文档不可靠。

于 2012-02-27T22:50:53.293 回答