Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengelakkan \'Operasi tidak dibenarkan selepas ResultSet ditutup\' dalam Java JDBC MySQL?

Bagaimana untuk Mengelakkan \'Operasi tidak dibenarkan selepas ResultSet ditutup\' dalam Java JDBC MySQL?

Linda Hamilton
Lepaskan: 2024-11-27 11:20:11
asal
378 orang telah melayarinya

How to Avoid

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

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:

  • Gunakan blok cuba-dengan-sumber untuk pengurusan sumber automatik.
  • Mulakan dan tutup Penyata, ResultSet dan Objek sambungan dalam blok cuba-tangkap.
  • Kendalikan pengecualian dengan anggun dan lepaskan sumber walaupun terdapat pengecualian.

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!

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