Java - 處理「ResultSet 關閉後不允許操作」例外
關閉MySQL 連線時,可能會遇到錯誤「Operation not結果集關閉後允許。
異常原因
您回傳的 ResultSet您的方法依賴於開啟的連接。當您關閉finally區塊中的連接時,ResultSet將變得不可用,從而導致異常。
解決方案
建立一個使用以下方法而不是返回ResultSet它用於填充一個物件或物件集合。然後,傳回填滿的物件或集合。
重構程式碼
以下程式碼顯示了您的方法的修改版本:
<code class="java">public static List<T> sqlquery(String query, RowMapper<T> rowMapper) throws SQLException { Connection connection = DriverManager.getConnection("databaseadress", "username", "password"); Statement st = connection.createStatement(); ResultSet rs = st.executeQuery(query); List<T> list = new ArrayList<>(); while (rs.next()) { list.add(rowMapper.mapRow(rs)); } try { rs.close(); st.close(); connection.close(); } catch (SQLException e) { log.info(e); } return list; }</code>
使用RowMapper
RowMapper 介面用於將ResultSet 的每一行對應到一個物件。您可以根據要填入的物件建立自己的 RowMapper 實作。好處
這個方法:結論
為了避免「ResultSet 關閉後不允許操作」異常,請修改程式碼以使用RowMapper 填充物件或集合並傳回它們而不是ResultSet 。這種方法可確保您的方法在連線關閉後保持功能。以上是Java中如何處理「ResultSet關閉後不允許操作」異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!