如何在JDBC executeBatch中忽略所有错误语句并执行所有好语句?

如何在JDBC executeBatch中忽略所有错误语句并执行所有好语句?,jdbc,Jdbc,我有java.sql.Statement,其中有许多批处理语句添加了addBatch。执行executeBatch将在第一条语句之后抛出BatchUpdateException,这违反了数据库约束,并且不会批量执行所有剩余语句。有什么方法可以批量执行所有语句而忽略错误的语句吗?我认为更好的解决方案是修复错误的语句。发生了什么?SQL?基础表?数据 例外被认为是“例外”。什么情况如此常见,以至于您可能会在这批产品中更频繁地看到它 例外情况是告诉你有什么地方不对劲。我不想推荐一个允许您忽略该消息的修

我有
java.sql.Statement
,其中有许多批处理语句添加了
addBatch
。执行
executeBatch
将在第一条语句之后抛出
BatchUpdateException
,这违反了数据库约束,并且不会批量执行所有剩余语句。有什么方法可以批量执行所有语句而忽略错误的语句吗?

我认为更好的解决方案是修复错误的语句。发生了什么?SQL?基础表?数据

例外被认为是“例外”。什么情况如此常见,以至于您可能会在这批产品中更频繁地看到它

例外情况是告诉你有什么地方不对劲。我不想推荐一个允许您忽略该消息的修复程序。如果抛出异常,这意味着您有机会在catch块中改善其根本问题

如果在批处理中循环处理每条语句,则可以单独捕获每条语句中的异常,并简单地记录错误。只是不要完全忽视它

但是,除非你能想出另一种恢复策略,否则你就不走运了。

有关类似的问题和答案,请参阅


它表示当抛出异常时,批处理将终止。您不能只执行好的数据。

好吧,如果您想保存所有可以插入的数据,只需执行提交,然后保存即可

在批处理中的每个语句上循环是不可能的,只有在调用execute batch时,才会得到异常,而不是每个语句(addbatch),因此不可能准确地找到错误所在:可以保存部分错误,或者什么都不保存,由您决定(提交或回滚)