Transaction
jdbc:setAutoCommit(true) 是否送出過去的執行?
我想執行一些語句,並在最後送出整個批次。我嘗試了以下方法:
connection.setAutoCommit(false); // Don't commit for each statement int[] returnCodes = pstmt.executeBatch(); // Execute all statements connection.setAutoCommit(true); // Back to normal state - future statements // will be committed instantly connection.commit(); // Commit our batch
失敗得很慘:
java.sql.SQLException: Can't call commit when autocommit=true --reference to the line with connection.commit()--
正確的方法是什麼?是否
connection.setAutoCommit(true)
送出所有已執行的批處理語句?
注意:如果在事務期間呼叫此方法並且更改了自動送出模式,則事務將被送出。如果呼叫了 setAutoCommit 並且未更改自動送出模式,則該呼叫是無操作的。
但我認為它在您的程式碼中不是非常可讀/明顯。您可能應該在切換回自動送出模式之前簡單地送出。使意圖明確。