在Java JDBC MySQL 連接中處理ResultSet 關閉
使用Java JDBC 處理MySQL 資料庫時,正確管理ResultSet 的關閉至關重要以避免錯誤:「結果集關閉後不允許操作。」當您嘗試關閉的ResultSet執行操作時,會發生此錯誤,導致意外行為和不正確的查詢結果。
了解問題
在提供的程式碼中, MySQLDonation 類別中 while (results.next()) 循環內觸發異常。實際原因是同一個Statement物件(語句)同時用於SELECT查詢(檢索捐款)和後續的DELETE查詢(刪除已處理的捐款記錄)。
解決方案:為每個查詢建立一個新語句
要解決此問題,您必須在每次執行查詢時建立新的 Statement 物件。這可確保先前的 ResultSet 不會因後續查詢執行而自動關閉。以下是MySQLDatabase 類別的變更:
public ResultSet query(String query) throws SQLException { Statement statement = connection.createStatement(); if (query.toLowerCase().startsWith("select")) { return statement.executeQuery(query); } else { statement.executeUpdate(query); } statement.close(); // Optional: May not be necessary as Resources are auto-closed return null; }
其他注意事項
除了管理Statement 物件之外,遵循處理JDBC 資源的最佳實踐以防止記憶體佔用也至關重要洩漏並確保正確的資料庫連接處理。以下是一些其他提示:
結論
透過為每個查詢建立一個新的語句並遵循資源管理最佳實踐,您可以避免「ResultSet 關閉後不允許操作」錯誤並確保MySQL 查詢的正確執行。請記住不斷優化您的資料庫互動以提高效率和可靠性。
以上是如何避免Java JDBC MySQL中「ResultSet關閉後不允許操作」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!