Rumah >pangkalan data >tutorial mysql >Mengapa Saya Mendapat \'java.sql.SQLException: Operasi tidak dibenarkan selepas ResultSet ditutup\' Apabila Menggunakan JDBC?
Java - Tidak Dapat Menggunakan ResultSet Selepas Sambungan Ditutup
Masalah:
Percubaan untuk laksanakan pertanyaan pangkalan data menggunakan JDBC menghasilkan ralat berikut:
java.sql.SQLException: Operation not allowed after ResultSet closed
Analisis:
JDBC menggunakan objek ResultSet untuk mendapatkan semula data daripada pertanyaan. Walau bagaimanapun, apabila sambungan ke pangkalan data ditutup, objek ResultSet menjadi tidak sah dan tidak boleh digunakan lagi.
Penyelesaian:
Untuk menyelesaikan isu ini, elakkan lulus objek ResultSet di luar kaedah yang melaksanakan pertanyaan. Sebaliknya, gunakan ResultSet untuk mengisi objek atau senarai dan mengembalikan objek yang terhasil itu.
Contoh Kod dengan Populasi Objek:
<code class="java">public static Collection<T> sqlquery (String query, RowMapper<T> rowMapper) throws SQLException { Connection connection=null; Statement st=null; ResultSet rs=null; connection = DriverManager.getConnection("databaseadress","username","password"); st = connection.createStatement(); rs = st.executeQuery(query); Collection<T> collection = new ArrayList<>(); while (rs.next()) { collection.add(rowMapper.mapRow(rs)); } // Close resources even if exceptions are thrown closeGracefully(rs, st, connection); return collection; }</code>
Menutup Sumber Dengan Anggun :
<code class="java">private static void closeGracefully(ResultSet rs, Statement st, Connection connection) { if (rs != null) { try { rs.close(); } catch (SQLException e) { /* Log or ignore */ } } if (st != null) { try { st.close(); } catch (SQLException e) { /* Log or ignore */ } } if (connection != null) { try { connection.close(); } catch (SQLException e) { /* Log or ignore */ } } }</code>
Pertimbangan Tambahan:
Atas ialah kandungan terperinci Mengapa Saya Mendapat \'java.sql.SQLException: Operasi tidak dibenarkan selepas ResultSet ditutup\' Apabila Menggunakan JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!