我有java.sql.Statement
與大量的批處理語句添加addBatch
。執行executeBatch
將在違反數據庫約束的第一條語句之後拋出BatchUpdateException
,並且不會批量執行所有剩餘的語句。有什麼辦法可以批量執行所有語句而忽略錯誤的語句嗎?如何忽略所有錯誤的語句並執行JDBC executeBatch中的所有好的語句?
2
A
回答
1
請參閱BatchUpdateException: the batch will not terminate以獲取類似的問題和答案。
它表示批處理將在異常拋出時終止。你不能只執行好的。
2
我認爲一個更好的解決方案是修復錯誤的解決方案。怎麼了? SQL?基礎表?數據?
例外情況應該是「例外」。什麼情況非常常見,以至於你可能更頻繁地看到這一批次?
例外是告訴你有什麼不對勁。我不想推薦一個可以讓你忽略該信息的修復程序。如果拋出異常,這意味着您有機會改進catch塊中的根本問題。
如果您正在遍歷批處理中的每條語句,則可以分別從每個語句中捕獲異常並簡單記錄錯誤。只是不要完全忽略它。
但是,除非你能想到另一種恢復策略,否則你運氣不好。
0
好吧,如果你想保存所有可能插入的數據,只需執行commit並保存。
循環遍歷批處理中的每條語句是不可能的,只有當您調用execute batch時,您將得到異常,而不是每個語句(addbatch),因此無法準確找到錯誤的位置:您可以保存其中的一部分,或者什麼都不保存,你決定(提交或回滾)。
相關問題
- 1. 有沒有辦法打印JDBC執行的所有SQL語句?
- 2. 如何確保執行所有語句?
- 3. 開關執行所有的case語句
- 4. PHP SQL忽略「 - 」之前的所有字符,如語句
- 5. 忽略jdbc批處理中的錯誤語句
- 6. JDBC Java準備語句執行錯誤
- 7. 一次執行所有'if'語句
- 8. SQL - 保證執行所有語句
- 9. 行錯誤4:PL/SQL:SQL語句忽略
- 10. JDBC語句沒有執行(沒有錯誤)
- 11. 如何記錄表上的Oracle執行所有Oracle select語句
- 12. 有沒有辦法執行所有可能的語句?
- 13. 使用ExecuteBatch和準備好的語句的好奇行爲
- 14. if語句將所有語句分組爲一個語句
- 15. PL/SQL過程語句忽略錯誤
- 16. 錯誤(3,1):PL/SQL:SQL語句忽略
- 17. 忽略if語句
- 18. 忽略if語句
- 19. SQL語句忽略
- 20. Error語句忽略
- 21. SQL Server - 在所有實例中的所有數據庫上執行sql語句
- 22. JDBC準備好的語句語法錯誤
- 23. 執行switch語句中的所有case - 特定問題
- 24. 查看在Oracle DB 12c中執行的所有SQL語句
- 25. VBA - 當所有的語句超過1時,評估所有語句
- 26. jdbc中的語句
- 27. 跟蹤代碼中的所有語句
- 28. sql語句從所有表
- 29. 如果語句被忽略
- 30. 如果語句被忽略