728x90
JDBC 에서
java.sql.SQLException: 전방향 전용 결과 집합에 부적합한 작업이 수행되었습니다 : first
ResultSet 객체의 first(), previous(), absolute()의 탐색중 만나게 된 에러이다.
이유인즉슨, ResultSet 객체는 기본적으로 후방향 탐색이 우선으로,
쉽게 말하자면, 간단히 next(), last() 메소드처럼 포인트 이동이 후방향으로만 이루어지는 것이다.
이루어지는 것이라고 하면 뭔가 좀 그런것 같다.
어쨌든, ResultSet 객체 자체는 전후방 모든 탐색이 가능하지만.....
보통 ResultSet 객체를 획득할 때, PreparedStatement 객체의 executeQuery()
메소드를 통하여 얻게 되는데, 이 때 PreparedStatement 객체로부터 반환되어지는
ResultSet 객체는 후방향 탐색만이 가능하도록 되어진 객체이다.
따라서 PreparedStatement 객체를 Connection 객체로부터 얻을 때
사용하는 Connection객체의 preparedStatement() 또는 createStatement() 메서드에
ResultSet 객체의 두 정적 필드 값을 넘겨준다.
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE
이 두 필드값을 preparedStatement() 또는 createStatement() 메서드에 파라미터값으로 넣어준다.
실제 사용 예는 다음과 같다.
dbConnection = DbConnection.getConnection();
pstmt = conn.prepareStatement(sqlWithFid, ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs = pstmt.executeQuery();
이렇게 코드를 구성하고 난 뒤부터는
ResultSet 객체를 임의대로 전, 후방향으로 탐색할 수 있다.
728x90
'JAVA' 카테고리의 다른 글
자바 암호화 RSA (0) | 2013.01.16 |
---|---|
자바 암호화 RSA2 (0) | 2013.01.16 |
CallableStatement (0) | 2012.10.23 |
jstl if null (0) | 2012.09.26 |
만 나이 계산 (2) | 2012.09.14 |