Memahami Pengecualian "Operasi Tidak Dibenarkan Selepas ResultSet Ditutup"
Apabila melaksanakan pernyataan SQL dalam Java, adalah penting untuk mengurus objek ResultSet dengan betul untuk mengelakkan pengecualian. Satu pengecualian biasa yang dihadapi ialah "java.sql.SQLException: Operasi tidak dibenarkan selepas ResultSet ditutup."
Pengecualian ini berlaku apabila operasi (seperti mengambil data daripada ResultSet) dicuba selepas ResultSet telah ditutup. Coretan kod yang anda berikan menggambarkan isu ini.
Punca Pengecualian
Dalam kod anda, anda mencipta objek pernyataan dan menggunakannya untuk melaksanakan dua pertanyaan: satu untuk mengambil nama pengguna dan satu lagi untuk mendapatkan ID daripada jadual "profil". Anda kemudiannya cuba mencipta PreparedStatement menggunakan objek sambungan yang sama dan menyediakan pernyataan kemas kini.
Masalah timbul apabila anda mengakses kaedah "getStuff()" dalam gelung sementara yang mengulangi keputusan "profil" meja. Di dalam kaedah ini:
Ini melanggar keperluan bahawa hanya satu ResultSet setiap objek Pernyataan boleh dibuka pada satu masa. Akibatnya, ResultSet daripada kaedah "getStuff()" bercanggah dengan objek ResultSet (rs2) yang dibuat dalam kod utama.
Penyelesaian
Untuk menyelesaikan masalah ini pengecualian, anda mesti mengurus objek ResultSet dengan betul:
Selain itu, anda boleh mempertimbangkan untuk mencipta objek Pernyataan baharu untuk kaedah "getStuff()" untuk mengelakkan sebarang kemungkinan konflik dengan objek Pernyataan yang digunakan dalam kod.
Atas ialah kandungan terperinci Mengapa Kod Java Saya Membuang Pengecualian 'java.sql.SQLException: Operasi tidak dibenarkan selepas ResultSet ditutup'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!