
SQLStatement::hasMoreResults 메소드는 쿼리가 아직 결과를 반환하지 않았을 때 true를 반환하는 것이 맞습니다. 하지만 MySQL Connector/J의 구현에 따라 true를 반환하는 경우가 많습니다.
이 메소드는 쿼리가 결과를 반환할 때마다 true를 반환하는 것이 아니라, 쿼리가 아직 결과를 반환하지 않았을 때 true를 반환하는 것입니다. 그러나 MySQL Connector/J는 쿼리가 완료되었을 때 true를 반환하는 경우가 많습니다.
예를 들어, 다음 쿼리를 실행할 때:
#hostingforum.kr
java
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM 테이블");
SQLStatement::hasMoreResults 메소드는 쿼리가 완료되었을 때 true를 반환합니다. 그러나 쿼리가 아직 결과를 반환하지 않았을 때 true를 반환해야 하는 것입니다.
이러한 문제는 MySQL Connector/J의 버전과 버그로 인해 발생할 수 있습니다. 최신 버전의 MySQL Connector/J를 사용하고, 버그를 확인하고 수정하는 것이 좋습니다.
또한, 쿼리가 완료되었을 때 true를 반환하는 경우를 예방하기 위해, 다음 코드를 사용할 수 있습니다:
#hostingforum.kr
java
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM 테이블");
while (rs.next()) {
// 결과 처리
}
rs.close();
stmt.close();
이 코드는 쿼리가 완료되었을 때 true를 반환하는 경우를 예방합니다.
2025-04-20 14:39