집 >데이터 베이스 >MySQL 튜토리얼 >Java JDBC MySQL에서 \'ResultSet이 닫힌 후 작업이 허용되지 않음\'을 방지하는 방법은 무엇입니까?
Java JDBC MySQL 연결에서 ResultSet 클로저 처리
Java JDBC를 사용하여 MySQL 데이터베이스로 작업할 때 ResultSet 닫기를 적절하게 관리하는 것이 중요합니다. 오류를 방지하려면 "ResultSet이 닫힌 후에는 작업이 허용되지 않습니다." 이 오류는 닫힌 ResultSet에서 작업을 수행하려고 할 때 발생하며, 이로 인해 예기치 않은 동작과 잘못된 쿼리 결과가 발생합니다.
문제 이해
제공된 코드에서 while(results.next()) 루프 내의 MySQLDonation 클래스에서 예외가 트리거됩니다. 실제 원인은 SELECT 쿼리(기부금 검색)와 후속 DELETE 쿼리(처리된 기부 기록 제거) 모두에 동일한Statement 개체(문)가 사용된다는 것입니다.
해결책: 각 쿼리에 대해 새 문 생성
문제를 해결하려면 쿼리를 실행할 때마다 새 문 개체를 생성해야 합니다. 이렇게 하면 후속 쿼리 실행으로 인해 이전 ResultSet이 자동으로 닫히지 않습니다. 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; }
추가 고려 사항
Statement 개체 관리 외에도 메모리 방지를 위해 JDBC 리소스 처리에 대한 모범 사례를 따르는 것이 중요합니다. 누출을 방지하고 적절한 데이터베이스 연결 처리를 보장합니다. 다음은 몇 가지 추가 팁입니다.
결론
쿼리마다 새 문을 생성하고 리소스 관리를 준수함으로써 모범 사례를 사용하면 "ResultSet이 닫힌 후 작업이 허용되지 않음" 오류를 방지하고 MySQL 쿼리가 올바르게 실행되도록 할 수 있습니다. 효율성과 안정성을 위해 데이터베이스 상호 작용을 지속적으로 최적화하는 것을 잊지 마세요.
위 내용은 Java JDBC MySQL에서 \'ResultSet이 닫힌 후 작업이 허용되지 않음\'을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!