2011-11-17 82 views
3

executeBatch更新不會繼續執行其餘的命令,如果其中一個執行失敗。無論如何還是有其他方法來執行批處理,其中即使一個命令執行失敗,其餘的命令仍然會成功執行。不使用executeUpdate,因爲它佔用大量時間並逐個執行查詢。替代執行jdbc中的批處理,具有不同的失敗處理?

回答

2

文檔說這個:

當批量更新操作期間發生錯誤時拋出的異常。除了 由SQLException提供的信息之外,BatchUpdateException爲批量更新期間成功執行的所有命令提供了更新 計數,即在錯誤發生之前執行的所有 命令。 更新計數數組中元素的順序對應於命令添加到批處理的順序。 在批量更新中的命令未能正確執行並拋出BatchUpdateException爲 之後,驅動程序可能會或可能不會繼續處理批次中的其餘命令。如果驅動程序在故障發生後繼續處理,則通過方法 BatchUpdateException.getUpdateCounts返回的數組將對批處理中的每個命令都有一個元素,而不僅僅是在錯誤發生前成功執行的命令的元素。 在驅動程序繼續處理命令的情況下,任何失敗的命令 的數組元素是Statement.EXECUTE_FAILED。

所以據我所知,它取決於你使用的jdbc驅動程序。

也許更好的解決方案是找到問題的原因並解決它?

+0

嗨,Alexandr,感謝您的回覆。 – vicky

+0

是的,但我正在處理的程序會插入數百萬條記錄。如果程序本身處理流程,並且允許在其中一個失敗時執行其餘的批處理命令,它也將是一個更好的錯誤處理功能。與我一起工作的jdbc驅動程序在故障後不支持處理。因此,我需要一個替代方法或一種方法來使executeBatch工作。謝謝:) – vicky

+0

如果你真的要插入數百萬條記錄,我會建議你使用一個特殊的數據庫供應商特定的工具,允許將數據加載到數據庫服務器。你的程序只能準備特殊格式的數據。然後,您應用所選工具。 – Alexandr