programing

java.sql.SQL 예외:사용된 결과 집합

i4 2023. 7. 10. 22:01
반응형

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

반응형