database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
ㆍCUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
CUBRID Q&A 1086 게시물 읽기
No. 1086
Q.다시 올립니다...
작성자
양하영
작성일
2008-05-22 16:33:39
조회수
8,252

질문을 제대로 못해서 죄송합니다..

어제 제가 올린건 해결이 됐습니다.. 이해가 잘 되질않아서 소스를 변경전

부분과 변경후 부분을 올리겠습니다.

========1번========

stmt = conn.createStatement();

rs = stmt.executeQuery(sb.toString());//sb.toString()은 쿼리부분

rtn = new String[rs.getRow()][4];        

int row_idx = 0;                        

while(rs.next()) {

    rtn[row_idx][0] = rs.getString(1);

    rtn[row_idx][1] = rs.getString(2);

    rtn[row_idx][2] = rs.getString(3);

    rtn[row_idx][3] = rs.getString(4);

    row_idx++;

}                

========1번========

========2번========

stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

rs = stmt.executeQuery(sb.toString());

rs.last();

rtn = new String[rs.getRow()][4];                        

rs.beforeFirst();

int row_idx = 0;                        

while(rs.next()) {

    rtn[row_idx][0] = rs.getString(1);

    rtn[row_idx][1] = rs.getString(2);

    rtn[row_idx][2] = rs.getString(3);

    rtn[row_idx][3] = rs.getString(4);

    row_idx++;

}

========2번========

 

여기서 1번을 실행했을경우에는 결과값을 얻어오질 못합니다.

하지만 2번을 실행했을경우에는 결과값을 제대로 얻어옵니다..

일단 문제는 해결했지만,, 제가 개인적으로 생각을 해보면

1번또한 문제없이 결과를 얻어오리라 생각을 했습니다.

왜 2번처럼 해야만 결과값을 얻어오는지 궁굼합니다..

 

이 글에 대한 댓글이 총 1건 있습니다.

getRow()는 ResultSet에서 현재 행을 가르쳐주는 것으로 결과가 있어도 rs.next()등을 해주지 않으면 현재 행을 알 수가 없기 때문에 2번과 같이 해야만 row수를 알수 있습니다.

 

 

>질문을 제대로 못해서 죄송합니다..

>어제 제가 올린건 해결이 됐습니다.. 이해가 잘 되질않아서 소스를 변경전

>부분과 변경후 부분을 올리겠습니다.

>========1번========

>stmt = conn.createStatement();

>rs = stmt.executeQuery(sb.toString());//sb.toString()은 쿼리부분

>rtn = new String[rs.getRow()][4];        

>int row_idx = 0;                        

>while(rs.next()) {

>    rtn[row_idx][0] = rs.getString(1);

>    rtn[row_idx][1] = rs.getString(2);

>    rtn[row_idx][2] = rs.getString(3);

>    rtn[row_idx][3] = rs.getString(4);

>    row_idx++;

>}                

>========1번========

>========2번========

>stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

>rs = stmt.executeQuery(sb.toString());

>rs.last();

>rtn = new String[rs.getRow()][4];                        

>rs.beforeFirst();

>int row_idx = 0;                        

>while(rs.next()) {

>    rtn[row_idx][0] = rs.getString(1);

>    rtn[row_idx][1] = rs.getString(2);

>    rtn[row_idx][2] = rs.getString(3);

>    rtn[row_idx][3] = rs.getString(4);

>    row_idx++;

>}

>========2번========

>

>여기서 1번을 실행했을경우에는 결과값을 얻어오질 못합니다.

>하지만 2번을 실행했을경우에는 결과값을 제대로 얻어옵니다..

>일단 문제는 해결했지만,, 제가 개인적으로 생각을 해보면

>1번또한 문제없이 결과를 얻어오리라 생각을 했습니다.

>왜 2번처럼 해야만 결과값을 얻어오는지 궁굼합니다..

 

손승일님이 2008-05-22 18:03:41에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1089Q.esql/x 질문드립니다. [1]
김재우
2008-05-26
7552
1088Q.로그 볼륨에 관한 문의 사항 [1]
안성민
2008-05-26
8935
1087Q.mysql의 mysql_fetch_field함수를 이용한 컬럼이름/타입정보등 얻어오기 [1]
lee
2008-05-23
6973
1086Q.다시 올립니다... [1]
양하영
2008-05-22
8252
1085Q.큐브리드에서 embeded sql 이나 dynamic sql 사용하기 [1]
김재우
2008-05-22
7027
1084Q.mysql DB를 cubrid DB로 마이그레이션 방법? [1]
초보
2008-05-22
7295
1083Q.이미 만들어진 테이블 필드 크기 변경 [2]
인경수
2008-05-22
6999
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.065초, 이곳 서비스는
	PostgreSQL v11.3으로 자료를 관리합니다