Rumah > pangkalan data > tutorial mysql > Mengapa Kod Java Saya Membuang Pengecualian 'java.sql.SQLException: Operasi tidak dibenarkan selepas ResultSet ditutup'?

Mengapa Kod Java Saya Membuang Pengecualian 'java.sql.SQLException: Operasi tidak dibenarkan selepas ResultSet ditutup'?

Mary-Kate Olsen
Lepaskan: 2024-12-14 21:34:15
asal
560 orang telah melayarinya

Why Does My Java Code Throw a

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:

  1. Anda melaksanakan pertanyaan dan mendapatkan ResultSet (rs).
  2. Anda gagal menutup ResultSet sebelum kembali.

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:

  1. Tutup ResultSet (rs) diperoleh daripada kaedah "getStuff()" sebelum kembali.
  2. Pastikan ResultSet (rs) dalam kod utama juga ditutup sebaik sahaja ia tidak diperlukan lagi.

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!

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