Menutup ResultSet Sebelum Menggunakan Semula Sambungan Pernyataan
Dalam pengaturcaraan pangkalan data Java, ia kadangkala menghadapi pengecualian yang timbul apabila menggunakan pernyataan yang disediakan selepas ditutup Set Keputusan. Pengecualian ini, "Operasi tidak dibenarkan selepas ResultSet ditutup," timbul secara khusus apabila objek sambungan yang sama digunakan.
Dalam coretan kod yang diberikan, pernyataan baharu yang disediakan dibuat menggunakan objek sambungan yang sama selepas menutup ResultSets sedia ada. (rs dan rs2). Ini menimbulkan pengecualian. Untuk menyelesaikan isu ini dan menggunakan semula sambungan penyata, amalan terbaik untuk memastikan bahawa semua ResultSets sebelumnya yang dikaitkan dengan Penyata ditutup.
Satu pendekatan yang disyorkan ialah menggunakan blok cuba-dengan-sumber, yang menutup ResultSets secara automatik dan Penyata. Berikut ialah contoh:
try ( Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery("SELECT `name` FROM `user` WHERE `id` = " + userId + " LIMIT 1;") ) { if (rs.next()) { // Process the results } try ( ResultSet rs2 = statement.executeQuery("SELECT `id` FROM `profiles` WHERE `id` =" + profId + ";") ) { String updateSql = "INSERT INTO `blah` ..."; PreparedStatement pst = (PreparedStatement) connection.prepareStatement(updateSql); while (rs2.next()) { // ... } pst.executeBatch(); } } catch (SQLException e) { e.printStackTrace(); }
Dalam contoh ini, kedua-dua rs dan rs2 ditutup dalam blok percubaan masing-masing sebelum cuba menggunakan Penyata untuk menyediakan kumpulan baharu. Ini memastikan bahawa tiada ResultSets terbuka sebelum melaksanakan pernyataan yang disediakan.
Ingat, mengekalkan objek ResultSet aktif adalah penting untuk interaksi pangkalan data yang betul. Sentiasa utamakan pengendalian dan pembersihan sumber yang betul untuk mengelakkan pengecualian dan memastikan integriti data.
Atas ialah kandungan terperinci Mengapa 'Operasi tidak dibenarkan selepas ResultSet ditutup' Berlaku Apabila Menggunakan Semula Sambungan Kenyataan di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!