Rumah >pangkalan data >tutorial mysql >Mengapa Kod MySQL JDBC Java Saya Membuang \'Operasi Tidak Dibenarkan Selepas ResultSet Ditutup\'?
Pengecualian MySQL JDBC Java: "Operasi Tidak Dibenarkan Selepas ResultSet Ditutup"
Ralat ini biasanya berlaku apabila cuba untuk beroperasi pada ResultSet tertutup. Mari analisa kod yang disediakan untuk mengenal pasti punca pengecualian.
Permulaan Pangkalan Data
Kelas MySQLDatabase mewujudkan sambungan ke pangkalan data dalam kaedah connect(). Pembolehubah pernyataan dimulakan dengan connection.createStatement(). Walau bagaimanapun, penyata ini dikongsi merentas semua operasi pangkalan data, termasuk pertanyaan pilih dan kemas kini.
Pemprosesan Derma
Kelas MySQLDonation berputar melalui jadual 'derma' dan memproses derma rekod. Gelung while berulang pada ResultSet yang diperolehi daripada pertanyaan("SELECT * FROM gieli436_purchases.donations") pernyataan.
Exception Cause
Ralat berlaku kerana pernyataan yang digunakan untuk mendapatkan semula ResultSet juga digunakan untuk melaksanakan pertanyaan padam, yang menutup ResultSet sebelumnya. Akibatnya, next() memanggil pada ResultSet tertutup membuang pengecualian "Operasi Tidak Dibenarkan Selepas ResultSet Ditutup".
Penyelesaian
Untuk menyelesaikan isu ini, buat Penyata baharu untuk setiap pelaksanaan pertanyaan. Ubah suai kelas MySQLDatabase untuk mengalih keluar pernyataan = connection.createStatement(); daripada connect(). Gantikan semua kejadian pernyataan dalam kelas dengan connection.createStatement().
Pembetulan
// MySQLDatabase class // Remove statement = connection.createStatement(); // Replace statement with connection.createStatement() // MySQLDonation class // Remove private variable statement // Query execution results = connection.createStatement().executeQuery("SELECT * FROM gieli436_purchases.donations"); // Delete execution connection.createStatement().executeUpdate(String.format("DELETE FROM gieli436_purchases.donations WHERE donations.username='%s' LIMIT 1", client.playerName.replaceAll(" ", "_")));
Dengan mencipta Penyata berasingan untuk setiap pertanyaan, anda memastikan bahawa ResultSet kekal terbuka semasa pemprosesan, menghalang pengecualian.
Atas ialah kandungan terperinci Mengapa Kod MySQL JDBC Java Saya Membuang \'Operasi Tidak Dibenarkan Selepas ResultSet Ditutup\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!