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

时间:2009-05-22 09:30:19

标签: jdbc

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

3 个答案:

答案 0 :(得分:2)

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

例外应该是“例外”。什么情况是如此常见,以至于您可能会更频繁地看到这批次?

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

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

但除非你能想到另一种恢复策略,否则你运气不好。

答案 1 :(得分:1)

有关类似问题和答案,请参阅BatchUpdateException: the batch will not terminate

它表示批处理将在抛出异常时终止。你不能只执行好的。

答案 2 :(得分:0)

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

循环遍历批处理中的每个语句是不可能的,只有当你调用execute batch时,你才会得到异常,而不是每个语句(addbatch),所以不可能找到错误的确切位置:你可以保存部分内容,或者不做任何事情,你决定(提交或回滚)。