[英]jdbc insert using batch get number of successfully inserted rows
我試圖為任何jdbc獲取正確數量的插入行(使用批處理和預准備語句)。 現在我知道兩種方式:
PreparedStatement.getUpdateCount()
- 但對於批處理,即使每行都被拒絕,此方法也會為每個批處理返回1。
int[]
作為PreparedStatement.executeBatch()
結果,並檢查每個元素是否大於0.但對於某些jdbcs(例如Oracle),此數組可能包含-2每個記錄。
那么,有沒有辦法知道成功插入行的數量?
關於批量更新計數:
您的第二個選擇是要走的路,但是您已經觀察到一些JDBC驅動程序並不打算完全實現此功能。
更新計數為-2 = Statement.SUCCESS_NO_INFO
表示命令已成功處理,但受影響的行數未知。
(值為-3 = Statement.EXECUTE_FAILED
表示命令無法成功執行,僅在驅動程序在命令失敗后繼續處理命令時才會發生)。
如果您只有簡單的INSERT,則可以將-2重新解釋為成功的+1插入記錄。 (如果批量更新拋出BatchUpdateException
,則需要在異常中評估更新計數)。 對於像INSERT FROM SELECT
這樣的其他情況,似乎你運氣不好或者需要依賴於特定於驅動程序的API。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.