Background Image

FORUM

조회 수 25351 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
안녕하세요.

이번에 큐브리드를 한번 사용해볼까 했는데, 심각한 문제에 봉착하게 되었습니다.
저의 오류인지 JDBC의 문제인지는 잘 모르겠습니다.

PreparedStatement pstmt = 생략...
"SELECT MENU_ID, MENU_NAME, MENU_URL, PRIV_ID, PARENT_MENU_ID, ORDER_NO, DEL_FLAG, CREATED_BY, CREATION_DATE, UPDATED_BY, UPDATED_DATE FROM BBS_MENU WHERE PARENT_MENU_ID IS NULL AND DEL_FLAG = 'N' ORDER BY ORDER_NO ASC" 를 사용해서
부모 메뉴가 없는 메뉴 정보를 읽어옵니다.
ResultSet rs = pstmt.executeQuery();

while (rs.next()) {
<!-- 문제의 시작 -->
// 여기에서 또다른 sql을 사용해서 결과를 가져옵니다.
// 대충 구현을 하자면
PreparedStatement pstmt2 = 생략...
"SELECT MENU_ID, MENU_NAME, MENU_URL, PRIV_ID, PARENT_MENU_ID, ORDER_NO, DEL_FLAG, CREATED_BY, CREATION_DATE, UPDATED_BY, UPDATED_DATE FROM BBS_MENU WHERE PARENT_MENU_ID = 'HOME' AND DEL_FLAG = 'N' ORDER BY ORDER_NO ASC"
ResultSet rs2 = pstmt2.executeQuery();
while(rs2.next()) {
 // 처리
}
<!-- 문제의 끝 -->
}

문제의 부분을 제거하고 실행하면, 결과 갯수가 5개라서 rs.next()가 총 6번 호출되는데,
문제의 부분이 들어가면 결과 갯수가 1개만 나옵니다. 즉 rs.next()가 총 2번 호출되는 묘한 상황이 연출되는것이죠.
PreparedStatement를 새로 생성해서 사용하는거라서 문제가 없을거 같은데, 이상한 결과가 나오는것입니다.

예전 DB(오라클 10g)에서 사용할때는 아무 문제가 없었는데, 제가 큐브리드의 특성을 잘못 파악해서 그런것인지 좀 알려주시면 감사하겠습니다.

그럼 좋은 하루 되시길 바랍니다. ^^

  • ?
    손승일 2010.01.15 01:05
    질의 결과를 가지고 순환하며 다시 질의 수행을 하여야 하는 중첩 statement 처리를 위해서 connection.setAutoCommit(false)로 설정하여야만 사용할 수 있습니다. 하나의 ResultSet close()되기 전에 다른 ResultSet을 생성할 경우 앞의 ResultSet autoCommit되어 ResultSet이 닫혀버리기 때문에 autoCommit false로 설정해야 합니다.
    conn.setAutoCommit(false);
    ResultSet rs = pstmt.executeQuery();
    while (rs.next()) {
      ... 
      ResultSet rs2 = pstmt2.executeQuery();
    }
    conn.commit();

    Statement를 생성하기 전에 autoCommit false로 설정하고 마지막에 commit()처리를 해주어야 합니다. Exception이 발생하면 rollback()처리도 해주어야 합니다.
  • ?
    강우 2010.01.15 19:42
    답변 감사합니다. ^^
    일단은 autoCommit을 false로 해서 처리했습니다. -> 잘되는군요 ^^
    그런데 단순히 읽기 전용(?)인 경우에도 autoCommit을 false로해서 처리해야하게 잘 이해가 안가네요.
    autoCommit이 true일때, 두번째 ResultSet이 생성된다고, 첫번째 ResultSet을 닫아버리는것은 뭔가 흠흠흠.
    그냥 큐브리드만의 특징인것이겠죠? ^^;;;;

  1. CUBRID 사용자를 위한 DBeaver 도구 출시 안내

    Date2024.04.23 Byadmin Views144031
    read more
  2. 엑셀 파일 임포트시 오류

    Date2010.01.25 By초보 Views26653
    Read More
  3. 문서 어떻게 다운받는 건가요?

    Date2010.01.25 By이종옥 Views13144
    Read More
  4. 큐브리드 방금 깔았는데요. 패스워드가

    Date2010.01.25 By이종옥 Views15133
    Read More
  5. 설치시 cubrid manager server start: fail 오류

    Date2010.01.24 By럭키늘보 Views19877
    Read More
  6. 데이터베이스 정지후 시작하니 로그파일이 사이즈가 0로 되며 시작이 안되는데?

    Date2010.01.24 By사람들 Views18
    Read More
  7. asp 레퍼런스가 있나요?

    Date2010.01.21 By바다왕자님 Views14712
    Read More
  8. 큐브리드 OLEDB 성능 문제 및 오류

    Date2010.01.18 By쭈난 Views17364
    Read More
  9. MySQL을 대체 할만한가요...?

    Date2010.01.17 By호비스 Views15841
    Read More
  10. 엄청난 DB 생성 소요 시간

    Date2010.01.16 By쭈난 Views13112
    Read More
  11. 패키지 분화가 가능할까요?

    Date2010.01.15 Byienfant Views12726
    Read More
  12. JDBC ResultSet에 대한 문의

    Date2010.01.15 By강우 Views25351
    Read More
  13. LOWER 오류가 왜 날까요?

    Date2010.01.15 By초보 Views13667
    Read More
  14. mysql의 rand() 함수 대체 문의

    Date2010.01.14 By초보 Views18766
    Read More
  15. DBCP사용중 CUBRID** 계열 클래스를 사용하려면?

    Date2010.01.14 By안지민 Views13387
    Read More
  16. mssql2005 --> cubrid 로 마이그레이션 오류 답변 부탁 드립니다.

    Date2010.01.14 ByPhilip Park Views27816
    Read More
  17. set type 에 빈값넣기

    Date2010.01.14 By초보 Views14504
    Read More
  18. ODBC 로 insert 가 안되네요 ㅠㅠ...

    Date2010.01.13 ByJinSniper Views14573
    Read More
  19. 리눅스서버상에 존재하는 CUBRID 데이터베이스를 CUBRID메니져클라이언트로 접속

    Date2010.01.13 By김대진 Views13439
    Read More
  20. CSQL 에서 CREATE USER로 계정 생성시 문의 점

    Date2010.01.13 By김대진 Views19244
    Read More
  21. Java sp에서 Sybase DB연결시 오류.

    Date2010.01.12 Byyoung Views30109
    Read More
Board Pagination Prev 1 ... 183 184 185 186 187 188 189 190 191 192 ... 213 Next
/ 213

Contact Cubrid

영업문의 070-4077-2112 / 기술문의 070-4077-2148 / 대표전화 070-4077-2110 / Email. contact_at_cubrid.com
Contact Sales