我有java.sql.Statement
,其中添加了许多使用addBatch
的批处理语句。执行executeBatch
将在违反数据库约束的第一个语句之后抛出BatchUpdateException
,并且不会批量执行所有剩余的语句。有没有办法可以批量执行所有语句而忽略错误的语句?
答案 0 :(得分:2)
我认为更好的解决方案是修复错误的解决方案。怎么了? SQL?基础表?数据?
例外应该是“例外”。什么情况是如此常见,以至于您可能会更频繁地看到这批次?
例外是告诉你有些不对劲。我不想推荐一个允许你忽略该消息的修复程序。如果抛出异常,则意味着您有机会在catch块中改善其根问题。
如果要循环遍历批处理中的每个语句,则可以单独捕获每个语句的异常并简单地记录错误。只是不要完全忽略它。
但除非你能想到另一种恢复策略,否则你运气不好。
答案 1 :(得分:1)
有关类似问题和答案,请参阅BatchUpdateException: the batch will not terminate。
它表示批处理将在抛出异常时终止。你不能只执行好的。
答案 2 :(得分:0)
好吧,如果你想保存所有可能插入的数据,只需执行提交,然后保存。
循环遍历批处理中的每个语句是不可能的,只有当你调用execute batch时,你才会得到异常,而不是每个语句(addbatch),所以不可能找到错误的确切位置:你可以保存部分内容,或者不做任何事情,你决定(提交或回滚)。