"ResultSet.isLast()"은 사용하지 않는 것이 좋습니다.

 

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. :star2:

원문으로 바로가기

Star This Project