'전방향'에 해당되는 글 1건

  1. 2007.08.21 ResultSet에서 레코드 결과의 수(행의 수)를 구하려면? (3)
 

오늘도 자바랑 오라클과 씨름을 합니다-_-;

삽질하던 중에 검색 결과에 대한 레코드 수가 필요했습니다. 그래서 JAVA API를 뒤지고 있는데 getRow() 라는 메소드가 ResultSet클래스에 있는 겁니다. 아... 이거를 쓰면 수를 리턴하는구나 하고 사용했습니다.

그래서 동적 할당을 getRow() 수만큼 해서 받았습니다. 그런데 of out array 어쩌네 하면서 배열의 범위를 넘었네 그럽니다. 디버깅해보니 executeQuery 하자마자 getRow를 하면 0을 받아옵니다-_-;

그렇습니다. 이눔은 현재 가리키고 있는 곳까지의 수만 받아옵니다. 그래서 맨 끝으로 보내야합니다.

ResultSet클래스의 메소드 중에 last()가 있습니다. 맨 끝으로 보내고, 다시 처음으로 보내서 검색하면 되겠구나 라는 생각에
[code]
rs = stmt.executeQuery("select * from USERS");
rs.last();
int rowCount = rs.getRow();
rs.beforeFirst();
[/code]
위와 같이 하면 오라클에서는
"전방향 전용 결과 집합에 부적합한 작업이 수행되었습니다"
라는 메시지를 띄우게 됩니다.

찾아본 결과 createStatement에 옵션을 주어야 하더군요.
statement생성
[code]
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
            ResultSet.CONCUR_UPDATABLE);

rs = stmt.executeQuery("select * from USERS");
rs.last();
int rowCount = rs.getRow();
rs.beforeFirst();
[/code]
라고 선언하고 하면 됩니다.

 
Posted by 머드초보

댓글을 달아 주세요

  1. ㅠㅠ 2011.05.11 04:19  댓글주소  수정/삭제  댓글쓰기

    오늘 몇번째 보는지 모르겠네요ㅠ
    정신을 어디다 두는지... 좋은 글입니다! ㅋㅋ

  2. 캐피 2013.08.02 12:07  댓글주소  수정/삭제  댓글쓰기

    잘보고갑니다.~~

  3. ㅜㅠ감사합니다 2015.05.05 14:02  댓글주소  수정/삭제  댓글쓰기

    져도 그것때문에 몇일을 해맷는대 고맙습니다!