DataAdapter具有您可以设置的ContinueUpdateOnError属性 到'True'将继续处理DataAdapter.Update 命令,即使遇到错误。这是理想的,所以我可以 捕获无法插入的每行数据的错误。然而, 如果批处理关闭,这只能正常工作 (DataAdapter.UpdateBatchSize = 1)。
如果DataAdapter.UpdateBatchSize设置为0或其他数字 将打开批处理,并在记录中发生错误 批处理,然后整个批处理未通过更新。显然,这是 不是我想要发生的事情。
理想情况下,我想混合使用这两种方案。我想成为 能够使用批处理,从而减少往返次数 插入行的数据库,但同时我想成为 能够捕获每个单独的行错误(对于某些人来说) 打开批处理时,原因不起作用,以及ContinueUpdateOnError 设置为“True”)。对我来说,看起来它必须是一种方式或 另一个。我或者单独插入每一行,然后去旅行 每个插入的数据库,能够捕获每一行的错误,或者 我尝试将批次发送到服务器,如果批次中的行失败, 那么整批都失败了。
有什么想法吗?
答案 0 :(得分:0)
从MSDN的页面“DataAdapter.ContinueUpdateOnError Property”:
如果将ContinueUpdateOnError设置为true,则在更新行期间发生错误时不会引发异常。将跳过行的更新,并将错误信息放在错误行的RowError属性中。 DataAdapter继续更新后续行。
从MSDN的页面“使用DataAdapter执行批处理操作(ADO.NET)”:
批处理执行与每个单独语句的执行具有相同的效果。语句按语句添加到批处理的顺序执行。批处理模式下的错误处理方式与批处理模式禁用时的处理方式相同。
所以要么你做错了,要么微软的文件不可靠。