java.sql.SQL 예외:사용된 결과 집합
java.sql 오류가 발생합니다.SQL 예외: Oracle 데이터베이스에 대해 쿼리를 실행하기 위해 사용된 결과 집합입니다.웹 사이트에 정의된 연결 풀을 통해 연결됩니다.실행되는 코드는 다음과 같습니다.
if (rs! = null) (
while (rs.next ()) (
count = rs.getInt (1);
)
)
결과 집합에 데이터가 포함되어 있습니다(rs.next(다음)).
감사해요.
결과 집합을 처리한 후 열 값에 액세스하는 동안 이 오류가 발생했습니다.
if (rs != null) {
while (rs.next()) {
count = rs.getInt(1);
}
count = rs.getInt(1); //this will throw Exhausted resultset
}
이것이 당신에게 도움이 되기를 바랍니다 :)
사용해 보십시오.
if (rs != null && rs.first()) {
do {
count = rs.getInt(1);
} while (rs.next());
}
결과 세트를 맨 위로 재설정한 경우,rs.absolute(1)
소진된 결과 세트를 얻을 수 없습니다.
while (rs.next) {
System.out.println(rs.getString(1));
}
rs.absolute(1);
System.out.println(rs.getString(1));
rs.absolute(1) 대신 users.first()를 사용할 수도 있습니다.
특정 조건에 대해 데이터베이스에서 반환된 레코드가 없는 경우 및 rs.getString(1)에 액세스하려고 했을 때 "exhausted resultset" 오류가 발생했습니다.
문제가 발생하기 전에 제 코드는 다음과 같습니다.
rs.next();
sNr= rs.getString(1);
수정 후:
while (rs.next()) {
sNr = rs.getString(1);
}
이 예외는 ResultSet이 while 루프 외부에서 사용될 때 발생합니다.ResultSet과 관련된 모든 처리는 While 루프 내에 보관하십시오.
이 문제는 일반적으로 stmt가 재사용되지만 다른 ResultSet이 필요할 때 발생합니다. 새 stmt를 만들고 실행해 보십시오.질문입니다. 고쳐줬어요!
오류 이면의 문제:Oracle 데이터베이스에 액세스하려는 경우 트랜잭션이 성공하고 트랜잭션을 완료할 때까지 삽입된 데이터에 액세스할 수 없습니다.commit
테이블에 데이터를 삽입한 후 쿼리합니다.Oracle 데이터베이스는 기본적으로 자동 커밋 모드가 아니기 때문입니다.
솔루션:
SQL PLUS로 이동하여 다음 쿼리를 따릅니다.
SQL*Plus: Release 11.2.0.1.0 Production on Tue Nov 28 15:29:43 2017
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Enter user-name: scott
Enter password:
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> desc empdetails;
Name Null? Type
----------------------------------------- -------- ----------------------------
ENO NUMBER(38)
ENAME VARCHAR2(20)
SAL FLOAT(126)
SQL> insert into empdetails values(1010,'John',45000.00);
1 row created.
SQL> commit;
Commit complete.
res.getInt(1)가 null이 아닌지 확인하십시오.null일 수 있는 경우 int count = 0이 아닌 정수 카운트 = null을 사용합니다.
Integer count = null;
if (rs! = null) (
while (rs.next ()) (
count = rs.getInt (1);
)
)
resultSet.next() 메서드 앞에 resultSet을 사용하고 있기 때문에 이 오류가 발생합니다.
카운트를 보려면 다음을 사용하십시오.
반면 (rs.next ()) '{count = rs.getInt (1); }
당신은 당신의 결과를 얻을 것입니다.
언급URL : https://stackoverflow.com/questions/3502005/java-sql-sqlexception-exhausted-resultset
'programing' 카테고리의 다른 글
ggplot2에서 x 및 y 축 레이블 추가 (0) | 2023.07.15 |
---|---|
Oracle: where 절에서 날짜 및 시간별로 필터링하는 방법 (0) | 2023.07.15 |
SQL Server GUID 정렬 알고리즘입니다. 왜죠? (0) | 2023.07.10 |
실제 숫자인 문자열 값을 기준으로 Mongo 정렬 (0) | 2023.07.10 |
'시스템'입니다.웹. 보안.SqlMembershipProvider'에는 스키마 버전 '1'과(와) 호환되는 데이터베이스 스키마가 필요합니다. (0) | 2023.07.10 |