Rumah > pangkalan data > tutorial mysql > Mengapakah \'Operasi tidak dibenarkan selepas ResultSet ditutup\' Berlaku dalam JDBC dan Bagaimana Ia Boleh Dibetulkan?

Mengapakah \'Operasi tidak dibenarkan selepas ResultSet ditutup\' Berlaku dalam JDBC dan Bagaimana Ia Boleh Dibetulkan?

Linda Hamilton
Lepaskan: 2024-11-26 16:32:10
asal
231 orang telah melayarinya

Why Does

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

  • Panggilan secara eksplisit kaedah close() pada ResultSet
  • Melaksanakan semula pertanyaan pada objek Pernyataan yang sama
  • Menggunakan objek Pernyataan untuk mencipta berbilang ResultSets

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 ..."));
    }
}
Salin selepas log masuk

Dengan mencipta Penyata baharu untuk setiap pertanyaan, anda memastikan bahawa ResultSet kekal terbuka sehingga pertanyaan itu selesai.

Nota Tambahan

  • Pertimbangkan untuk menggunakan blok cuba-dengan-sumber untuk menutup pernyataan dan set hasil secara automatik.
  • Jika anda perlukan untuk mengulangi berbilang ResultSets, laksanakannya pada objek Pernyataan yang berbeza.
  • Rujuk Dokumentasi JDBC untuk amalan terbaik mengendalikan ResultSets.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan