Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan 'java.sql.SQLException: Operasi tidak dibenarkan selepas ResultSet ditutup'?
ResultSet Reuse Solution untuk "java.sql.SQLException: Operasi tidak dibenarkan selepas ResultSet ditutup"
Apabila menghadapi masalah "java.sql. SQLException: Operasi tidak dibenarkan selepas ralat ResultSet ditutup", ini menunjukkan bahawa beberapa set hasil sedang digunakan serentak daripada objek pernyataan yang sama. Ini melanggar jangkaan lalai kelas Penyata, yang membenarkan hanya satu ResultSet dibuka pada satu masa.
Untuk menyelesaikan isu ini dalam kod yang disediakan, langkah berikut perlu diambil:
Dalam kaedah getStuff():
Dalam kod panggilan:
Kod yang diubah suai dengan pembetulan ini akan kelihatan seperti:
try { //Get some stuff String name = ""; String sql = "SELECT `name` FROM `user` WHERE `id` = " + userId + " LIMIT 1;"; ResultSet rs = statement.executeQuery(sql); if (rs.next()) { name = rs.getString("name"); } rs.close(); // Close the ResultSet 'rs' String sql2 = "SELECT `id` FROM `profiles` WHERE `id` =" + profId + ";"; ResultSet rs2 = statement.executeQuery(sql2); String updateSql = "INSERT INTO `blah`............"; PreparedStatement pst = (PreparedStatement) connection.prepareStatement(updateSql); while (rs2.next()) { int id = rs2.getInt("id"); int stuff = getStuff(id); pst.setInt(1, stuff); pst.addBatch(); } rs2.close(); // Close the ResultSet 'rs2' pst.executeBatch(); } catch (Exception e) { e.printStackTrace(); } private int getStuff(int id) { try { String sql = "SELECT ......;"; ResultSet rs = statement.executeQuery(sql); if (rs.next()) { int result = rs.getInt("something"); rs.close(); // Close the ResultSet 'rs' in 'getStuff' method return result; } return -1; }//code continues }
Dengan melaksanakan perubahan ini, kod memastikan semua ResultSets adalah ditutup dengan betul, menghalang "java.sql.SQLException: Operasi tidak dibenarkan selepas ResultSet ditutup" ralat.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan 'java.sql.SQLException: Operasi tidak dibenarkan selepas ResultSet ditutup'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!