MySQL 結果集關閉後不允許進行操作
使用JDBC 與資料庫互動時,小心處理ResultSet 物件至關重要避免諸如「結果集關閉後不允許操作」之類的異常。當您嘗試對已關閉的 ResultSet 執行操作時,會發生此錯誤。
理解異常
當您嘗試迭代ResultSet 在關閉後使用其 next() 方法。發生這種情況是因為關閉 ResultSet 會釋放其資源,包括其內部遊標,使其無法進行進一步的操作。
關閉結果集的原因
提供的程式碼中的解
提供的程式碼中的解決方案
提供的程式碼中的錯誤發生在MySQLDonation 類,同時循環瀏覽捐贈表。當後續 DELETE 查詢重新執行該 Statement 時,從 SELECT 查詢獲得的 ResultSet 將會關閉。// In MySQLDatabase class private void handleDonation(Client client, int creditamount) { try (Statement statement = getConnection().createStatement()) { // Execute DELETE query with new Statement statement.executeUpdate(String.format("DELETE ...")); } }
要解決此問題,請將查詢執行和結果處理步驟分開:
透過為每個查詢建立一個新的語句,您可以確保ResultSet 保持開啟狀態,直到查詢完成。
以上是JDBC中為什麼會出現「ResultSet關閉後不允許操作」的情況以及如何解決?的詳細內容。更多資訊請關注PHP中文網其他相關文章!