Operasi tidak dibenarkan selepas MySQL Result Set telah ditutup
Apabila berinteraksi dengan pangkalan data menggunakan JDBC, adalah penting untuk mengendalikan objek ResultSet dengan berhati-hati elakkan pengecualian seperti "Operasi tidak dibenarkan selepas ResultSet ditutup." Ralat ini timbul apabila anda cuba melakukan operasi pada ResultSet yang telah ditutup.
Memahami Pengecualian
Pengecualian dilemparkan apabila anda cuba mengulangi ResultSet menggunakan kaedah next() selepas ia ditutup. Ini berlaku kerana menutup ResultSet mengeluarkan sumbernya, termasuk kursor dalamannya, menjadikannya tidak sah untuk operasi selanjutnya.
Punca Set Keputusan Tertutup
Penyelesaian dalam Kod yang Diberikan
Ralat dalam yang disediakan kod berlaku dalam kelas MySQLDonation semasa berbasikal melalui jadual derma. ResultSet yang diperoleh daripada pertanyaan SELECT ditutup apabila Penyata dilaksanakan semula untuk pertanyaan DELETE yang berikutnya.
Untuk menyelesaikan isu ini, pisahkan pelaksanaan pertanyaan dan langkah pemprosesan hasil:
// In MySQLDatabase class private void handleDonation(Client client, int creditamount) { try (Statement statement = getConnection().createStatement()) { // Execute DELETE query with new Statement statement.executeUpdate(String.format("DELETE ...")); } }
Dengan mencipta Penyata baharu untuk setiap pertanyaan, anda memastikan bahawa ResultSet kekal terbuka sehingga pertanyaan itu selesai.
Nota Tambahan
Atas ialah kandungan terperinci Mengapakah \'Operasi tidak dibenarkan selepas ResultSet ditutup\' Berlaku dalam JDBC dan Bagaimana Ia Boleh Dibetulkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!