Mengendalikan Penutupan ResultSet dalam Sambungan MySQL JDBC Java
Apabila bekerja dengan pangkalan data MySQL menggunakan Java JDBC, adalah penting untuk menguruskan penutupan ResultSets dengan betul untuk mengelakkan ralat: "Operasi tidak dibenarkan selepas ResultSet ditutup." Ralat ini berlaku apabila anda cuba melakukan operasi pada ResultSet tertutup, yang membawa kepada tingkah laku yang tidak dijangka dan hasil pertanyaan yang salah.
Memahami Isu
Dalam kod yang disediakan, pengecualian dicetuskan dalam kelas MySQLDonation dalam gelung sementara (results.next()). Punca sebenar ialah objek Penyata (penyataan) yang sama digunakan untuk kedua-dua pertanyaan SELECT (untuk mendapatkan semula derma) dan pertanyaan DELETE yang berikutnya (untuk mengalih keluar rekod derma yang diproses).
Penyelesaian: Buat Penyata Baharu untuk Setiap Pertanyaan
Untuk menyelesaikan isu, anda mesti mencipta objek Pernyataan baharu setiap kali anda laksanakan pertanyaan. Ini memastikan bahawa ResultSet sebelumnya tidak ditutup secara automatik oleh pelaksanaan pertanyaan berikutnya. Berikut ialah perubahan pada kelas MySQLDatabase:
public ResultSet query(String query) throws SQLException { Statement statement = connection.createStatement(); if (query.toLowerCase().startsWith("select")) { return statement.executeQuery(query); } else { statement.executeUpdate(query); } statement.close(); // Optional: May not be necessary as Resources are auto-closed return null; }
Pertimbangan Tambahan
Selain mengurus objek Pernyataan, adalah penting untuk mengikuti amalan terbaik untuk mengendalikan sumber JDBC untuk mengelakkan ingatan kebocoran dan memastikan pengendalian sambungan pangkalan data yang betul. Berikut ialah beberapa petua tambahan:
Kesimpulan
Dengan mencipta Penyata baharu untuk setiap pertanyaan dan mematuhi pengurusan sumber amalan terbaik, anda boleh mengelakkan ralat "Operasi tidak dibenarkan selepas ResultSet ditutup" dan memastikan pelaksanaan pertanyaan MySQL anda dengan betul. Ingat untuk terus mengoptimumkan interaksi pangkalan data anda untuk kecekapan dan kebolehpercayaan.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan \'Operasi tidak dibenarkan selepas ResultSet ditutup\' dalam Java JDBC MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!