Background Image
조회 수 28035 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Attempt to access a closed ResultSet(PreparedStatement) 과 같은 오류는 일반적으로
1.        질의의 사용 후 결과를 가져와 사용 중 commit/rollback을 수행 후 결과를 계속 가져오려 하는 경우 transaction이 종료되어 결과 셑이 닫혀버린 경우
2.        구조상 한 클라이언트에서 서버로의 질의 수행 후 특정시간(SESSION TIME OUT)동안 서버로의 요청이 없어 서버단의 미들웨어(Broker)에서 연결을 강제 종료 시킨 경우
위 2가지의 경우 발생할 수 있습니다.

1의 경우는 주로 한 개의 ResultSet이 close()되기 전에 다른 ResultSet을 생성할 경우 앞의 ResultSet은 autoCommit되어 결과 셑이 닫혀버리면서 발생하는 데 이와 같이 동시에 여러 개의 ResultSet이 필요한 경우엔 autoCommit을 false로 설정해야 합니다.
예를 들면
try {
conn.setAutoCommit(false);
query1 = "SELECT id FROM sample1";
pstmt1 = conn.prepareStatement(query1);
query2 = "SELECT result FROM sample2 WHERE id=?";
pstmt2 = conn.prepareStatement(query2);

rs1 = pstmt1.executeQuery();
while(rs1.next()){
psmt2.setString(1, rs1.getString("id"));
rs2 = pstmt2.executeQuery();
result = rs2.getString("result");
}
conn.commit();

} catch ( Exception e ) {
conn.rollback();
} finally {
if ( conn != null ) conn.close();
}

와 같이 상단에서 autoCommit을 false로 설정하고 마지막에 commit()처리를 해주셔야 합니다. 물론 exception이 발생하면 rollback()처리도 해주셔야 합니다.

2의 경우에는 큐브리드 브로커의 환경설정 중 SESSION_TIMEOUT 설정 값을 크게 늘려주는 방법으로 해결할 수 있습니다.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
16 응용개발 PHP에서 prepared statement 사용하기 3 Prototype 2009.04.16 21454
15 응용개발 응용프로그램에서 질의 처리시 commit/rollback 처리 문제 admin 2008.11.21 21599
14 응용개발 CUBRID에서 euc-kr의 한글 데이터를 utf-8의 한글 데이터로 변경 시 주의할 점 cubebridge 2010.04.01 22403
13 응용개발 윈도우 환경에서 PHP 모듈 로드를 못 할 경우 해결법 3 Prototype 2009.11.26 22483
12 응용개발 CUBRID 에서 제공하는 ODBC 함수 목록 admin 2008.11.21 26051
11 응용개발 loadjava 사용 시 inner class 로딩은 어떻게? admin 2008.11.21 27450
» 응용개발 Attempt to access a closed ResultSet(PreparedStatement) 오류 admin 2008.11.21 28035
9 응용개발 CUBRID에서 systimestamp, sysdatetime default값에 대한 정의 cubebridge 2009.12.16 28265
8 응용개발 tomcat 5.5 버전 이상에서 dbcp(커넥션 풀링) 설정법 admin 2008.11.21 28527
7 응용개발 CUBRID와 Oracle에서의 ''(공백)의 차이 비교 cubebridge 2010.10.01 28583
6 응용개발 php에서 serialize/unserialize 사용 시 주의할 점 시난 2009.12.29 31628
5 응용개발 CUBRID AUTO_INCREMENT 컬럼 MySQL LAST_INSERT_ID() 대체 방법 손승일 2009.12.22 33235
4 응용개발 JDBC 사용시 SQL 로깅 - p6spy 사용 1 웁쓰 2009.07.01 35999
3 응용개발 Weblogic 10.0 사용시 JDK 1.5를 사용한 JDBC 드라이버 사용시 주의사항. cubebridge 2012.02.22 51957
2 응용개발 WHERE 조건에서 다중 컬럼 IN절 처리 최적화 방법 (cubrid + ibatis) 1 이상신 2015.08.21 55133
1 응용개발 weblogic 8.1 에 CUBRID Connection Pool, DataSource 설정 방법 file 웁쓰 2009.07.01 66306
Board Pagination Prev 1 2 3 Next
/ 3

Contact Cubrid

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