簡體   English   中英

jdbc insert使用批量獲取成功插入的行數

[英]jdbc insert using batch get number of successfully inserted rows

我試圖為任何jdbc獲取正確數量的插入行(使用批處理和預准備語句)。 現在我知道兩種方式:

  1. PreparedStatement.getUpdateCount() - 但對於批處理,即使每行都被拒絕,此方法也會為每個批處理返回1。

  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM