[JDBC] 쿼리 후에 ResultSet 에 데이터가 있는지 확인하는 방법

외부 DB와 연동하는 코드에서 ResultSet에 데이터가 있는지 여부 아래와 같이 확인하였다.

ResultSet rs = null;

if(rs.next()){
    rs.previous()
    //조회 된 데이터를 DB에 저장
}

MySQL에서 데이터를 불러올 때는 문제가 없었지만 MSSQL에서 커서는
전방향 전용 결과 집합에 부적합한 작업이 수행되었습니다. 라는 에러가 발생하였다.

이는 ResultSet 기본설정이 TYPE_FORWARD_ONLY 로 되어있기 때문이다.

아래와 같이 상수 두개를 선언해 주어 에러가 발생하지 않도록 조치하였다.

조치 방법은 2가지 이다.

1. 기본설정 변경

PreparedStatement pstmt = dbConnFactory.getConnection().prepareStatement(connectorManager.getCollectorConfig().getQuery(), ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

2. 메서드 사용

rs.isBeforeFirst();  조회 된 데이터가 없으면 false 를 반환한다.

댓글

이 블로그의 인기 게시물

[Android] Android 로깅 시 isLoggable() 메서드 사용

[Spring] @PropertySource and Environment 사용시 Property 값이 null 로 들어오는 경우