ResultSet.isLast()
를 사용하지 않으면 좋은 데에는 여러 이유가 있습니다.
첫째로 이 메소드는 TYPE_FORWARD_ONLY ResultSet인 경우 optional하게 지원됩니다.
둘째로 이 메소드는 매우 비싼 연산입니다. (이 메소드를 처리하기 위해 드라이버가 next row를 가져와야 할 수 있습니다)
마지막으로 ResultSet이 비어있는 경우 어떤 결과를 반환해야하는지가 명확하지 않습니다.
그래서 어떤 드라이버에서는 기대한 것과는 다른 결과를 반환하기도 합니다.
규칙을 어긴 코드
stmt.executeQuery("SELECT name, address FROM PERSON");
ResultSet rs = stmt.getResultSet();
while (! rs.isLast()) { // 규칙을 어긴 코드
// row를 처리하는 코드
}
규칙을 준수한 해결책
ResultSet rs = stmt.executeQuery("SELECT name, address FROM PERSON");
while (rs.next()) {
// process row
}
If you like SONARKUBE, don’t forget to give me a star.