집 >데이터 베이스 >MySQL 튜토리얼 >'java.sql.SQLException: ResultSet이 닫힌 후 작업이 허용되지 않습니다'를 해결하는 방법은 무엇입니까?
"java.sql.SQLException: ResultSet이 닫힌 후 작업이 허용되지 않음"에 대한 ResultSet 재사용 솔루션
"java.sql.SQL. SQLException: ResultSet이 닫힌 후 작업이 허용되지 않습니다." 오류는 동일한 문 개체에서 여러 결과 집합이 동시에 사용되고 있음을 나타냅니다. 이는 한 번에 하나의 ResultSet만 열 수 있도록 허용하는Statement 클래스의 기본 기대치를 위반합니다.
제공된 코드에서 이 문제를 해결하려면 다음 단계를 수행해야 합니다.
getStuff() 메소드에서:
호출 코드에서:
이러한 수정 사항을 적용하여 수정된 코드는 다음과 같습니다.
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 }
이러한 변경 사항을 구현함으로써 코드는 모든 ResultSet이 올바르게 닫혀 "java.sql.SQLException: ResultSet 닫힌 후 작업이 허용되지 않음" 오류를 방지합니다.
위 내용은 'java.sql.SQLException: ResultSet이 닫힌 후 작업이 허용되지 않습니다'를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!