홈>
이 코드를 시도하고 실행할 때마다 "java.sql.SQLException : ResultSet 종료 후 작업이 허용되지 않습니다"라는 메시지가 나타납니다. 연결을 닫지 않고 작동하지만이 오류가 발생하는 이유와 연결을 닫는 올바른 방법은 무엇인지 궁금합니다. 코드는 다음과 같습니다.
public ResultSet UpdateTable(){
Connection con = connect();
ResultSet resultset;
Statement s = null;
resultset = null;
try{
s = con.createStatement();
resultset = s.executeQuery("select * from customera");
return resultset;
}
catch(SQLException e){
System.out.println(e.getMessage());
//con.close();
}
finally{
try{
s.close();
resultset.close();
con.close();
}
catch(SQLException e){
System.out.println(e.getMessage());
}
}
return null;
}
}
- 답변 # 1
- 답변 # 2
표시된 코드에서 오류가 발생하지 않았을 가능성이 있습니다. 대신
ResultSet
를 닫은 결과 다른 코드에서 생성되고 있습니다. 그리고Statement
다른 코드에서 사용하기 전에. (Statement
닫기 또한ResultSet
를 닫습니다 설명서에 따라).ResultSet
를 사용하여 완료하는 데 필요한 코드를 호출 할 수 있습니다 이 방법으로, 또는 당신은 단지ResultSet
를 반환 할 수 있습니다 닫는 것은 호출 코드의 책임입니다. 당신이 결정하는 것은 다른 코드에 따라 다를 수 있지만, 코드를 호출 코드의 책임으로 만드는 것을 선호합니다 (특히ResultSet
를 받기 때문에) 이 방법을 사용하면 닫아야합니다.)부수적으로, 예외 메시지를 더 잘 구분해야 어디에서 왔는지 알 수 있습니다.
관련 자료
- ibm cloud - ibm watson iot 플랫폼 - 닫힌 연결 : 작업이 승인되지 않았습니다
- linux - 확장 작업 후 mdraid가 다시 동기화되는 이유는 무엇입니까?
- valueerror - 닫힌 파일의 i/o 작업 왜 이런 일이 발생합니까? python book으로 지루한 작업 자동화
- 사용자가 웹 브라우저/탭을 닫은 후에도 Python 3 기능을 실행하는 방법은 무엇입니까?
- java - Hibernate에서 Spring이없는 'JUnit 테스트 후 롤백 데이터베이스 작업'을 수정하는 방법은 무엇입니까?
- python - 매트릭스 작동 후 출력
관련 질문
- java : netbeans에서 편집 불가능 /생성 된 code를 변경하는 방법
- java : NonUniqueDiscoveredSqlAliasException : 네이티브 SQL 쿼리의 자동 검색 중에 중복 된 SQL 별칭 [ASC_ID]이 발생했습니다.
- javascript : 다음 데이터베이스 생성 : encuestadoSQLit final SQLiteDatabase db= encuestado.getWritableDatabase ()
- java : Hibernate @Query가 필요한 출력을 생성하지 않음
- Android Studio 앱을 원격 MySQL에 연결하는 중 오류 : java.sql.SQLNonTransientConnectionException : 데이터베이스 서버에 대한 연결을 만들 수 없습니다.
- JavaFx Desktop Application에서 매번 로그인하도록 요청하지 않도록 사용자의 세부 정보를 기억하는 방법
- java : JNI 오류가 발생했습니다. 설치를 확인하고 Eclipse x86 Windows 8.1에서 다시 시도하십시오.
- java : DB의 날짜 데이터가 브라우저에서 다르게 나타나는 이유는 무엇입니까?
참조가 있는지 확인한 다음 닫으십시오.
의심하다, 문제
당신은
Connection
를 닫고 있습니다 그리고Statement
ResultSet
를 반환하기 전에 그래서ResultSet
사용하지 못할 수 있습니다. 당신은finally
를 알고 있어야합니다 값을 반환하기 전에 블록이 실행됩니다. 그래서 당신이Connection
를 떠날 때 코드가 작동하는 이유입니다 열다.대신 결과를 일부 데이터 구조에 저장하고 반환해야합니다.