問題:
例外「java.sql.SQLException: オペレーション」 ResultSet を閉じた後は許可されません」というメッセージが MySQL データベースへの接続を閉じるときに発生し、接続終了後の ResultSet の処理に問題があることを示します。
コードの抜粋:
<code class="java">public static ResultSet sqlquery(String query) { ResultSet rs = null; Connection connection = null; Statement st = null; try { // Establish connection and execute query } finally { // Attempt to close connection and ResultSet objects } return rs; }</code>
説明:
JDBC は、すべてのクエリ結果を直ちに ResultSet に取得しません。代わりに、結果の取得を容易にするオブジェクトを提供します。ただし、このオブジェクトは接続が閉じると無効になります。
解決策:
この問題を回避するには、接続を閉じる前にコードでクエリ結果を保存するオブジェクトを作成する必要があります。 。これには、RowMapper を使用して ResultSet 行をオブジェクトにマップし、メソッドの結果として返されるコレクションにデータを取り込むことが含まれます。
解決されたコード:
<code class="java">public static <T> List<T> sqlquery(String query, RowMapper<T> rowMapper) { Connection connection = null; Statement st = null; ResultSet rs = null; try { // Establish connection and execute query } finally { // Handle possible exceptions gracefully } while (rs.next()) { list.add(rowMapper.mapRow(rs)); } return list; }</code>
追加メモ:
以上がJava で MySQL 接続を閉じるときに「java.sql.SQLException: ResultSet が閉じられた後は操作は許可されません」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。