Rumah >pangkalan data >tutorial mysql >Mengapa saya mendapat \'java.sql.SQLException: Operasi tidak dibenarkan selepas ResultSet ditutup\' apabila menutup Sambungan MySQL saya di Java?
Masalah:
Pengecualian, "java.sql.SQLException: Operation tidak dibenarkan selepas ResultSet ditutup," timbul apabila menutup sambungan ke pangkalan data MySQL, menunjukkan masalah dengan pengendalian ResultSet selepas penamatan sambungan.
Petikan Kod:
<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>
Penjelasan:
JDBC tidak mengambil semua hasil pertanyaan ke ResultSet serta-merta. Sebaliknya, ia menyediakan objek yang memudahkan perolehan semula hasil. Walau bagaimanapun, objek ini menjadi tidak sah apabila sambungan ditutup.
Penyelesaian:
Untuk mengelakkan isu ini, kod harus mencipta objek untuk menyimpan hasil pertanyaan sebelum menutup sambungan . Ini melibatkan penggunaan RowMapper untuk memetakan baris ResultSet ke objek dan mengisi koleksi yang dikembalikan sebagai hasil kaedah.
Kod Selesai:
<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>
Nota Tambahan:
Atas ialah kandungan terperinci Mengapa saya mendapat \'java.sql.SQLException: Operasi tidak dibenarkan selepas ResultSet ditutup\' apabila menutup Sambungan MySQL saya di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!