首頁 >資料庫 >mysql教程 >Java中如何處理「ResultSet關閉後不允許操作」異常?

Java中如何處理「ResultSet關閉後不允許操作」異常?

Linda Hamilton
Linda Hamilton原創
2024-10-29 14:21:02886瀏覽

How to Handle

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 或語句關閉期間引發的異常幹擾連線關閉。
  • 促進查詢參數化以防止 SQL 注入。

結論

為了避免「ResultSet 關閉後不允許操作」異常,請修改程式碼以使用RowMapper 填充物件或集合並傳回它們而不是ResultSet 。這種方法可確保您的方法在連線關閉後保持功能。

以上是Java中如何處理「ResultSet關閉後不允許操作」異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn