【问题标题】:How to ignore all erroneous statements and execute all good ones in JDBC executeBatch?如何在 JDBC executeBatch 中忽略所有错误语句并执行所有好的语句?
【发布时间】:2009-05-22 09:30:19
【问题描述】:

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

【问题讨论】:

    标签: jdbc


    【解决方案1】:

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

    异常应该是“异常的”。什么情况如此常见以至于您可能会在这批产品中更频繁地看到它?

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

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

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

    【讨论】:

      【解决方案2】:

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

      它说批处理将在抛出异常的那一刻终止。你不能只执行好的。

      【讨论】:

        【解决方案3】:

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

        不可能对批处理中的每条语句进行循环,只有当你调用执行批处理时,你才会得到异常,而不是在每条语句(addbatch)上,所以无法找到错误的确切位置:你可以保存其中的一部分,或者什么都不保存,由您决定(提交或回滚)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-27
          • 2012-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-10
          相关资源
          最近更新 更多