복붙노트

[SQL] java.sql.SQLException의 : 지친 결과 집합

SQL

java.sql.SQLException의 : 지친 결과 집합

Oracle 데이터베이스에 대해 쿼리를 실행하는 데 소모 된 ResultSet : 나는 오류 java.sql.SQLException의를 얻을. 연결은 웹 스피어에 정의 된 연결 풀을 통해입니다. 다음과 같이 실행 된 코드는 다음과 같습니다

            if (rs! = null) (
                while (rs.next ()) (
                    count = rs.getInt (1);
                )
            )

나는 결과 집합에 데이터가 포함되어 있습니다 (rs.next ())

감사

해결법

  1. ==============================

    1.결과 집합을 처리 한 후 열 값에 액세스하는 동안이 오류를 본 적이있다.

    결과 집합을 처리 한 후 열 값에 액세스하는 동안이 오류를 본 적이있다.

    if (rs != null) {
      while (rs.next()) {
        count = rs.getInt(1);
      }
      count = rs.getInt(1); //this will throw Exhausted resultset
    }
    

    이 당신을 도울 것입니다 희망 :)

  2. ==============================

    2.이 시도:

    이 시도:

    if (rs != null && rs.first()) {
        do {
            count = rs.getInt(1);
        } while (rs.next());
    }
    
  3. ==============================

    3.당신이 rs.absolute (1)을 사용하여, 가기 결과 세트를 재설정하면 당신은 비우면 결과 집합을받지 않습니다.

    당신이 rs.absolute (1)을 사용하여, 가기 결과 세트를 재설정하면 당신은 비우면 결과 집합을받지 않습니다.

    while (rs.next) {
        System.out.println(rs.getString(1));
    }
    rs.absolute(1);
    System.out.println(rs.getString(1));
    

    당신은 또한 같은 않는 대신 rs.absolute (1)의 () rs.first 사용할 수 있습니다.

  4. ==============================

    4.특정 조건에 대해 데이터베이스에서 반환 된 레코드가없는 경우 나는 rs.getString (1)에 액세스하려고 할 때; 이 오류 "소진 결과 집합"을 얻었다.

    특정 조건에 대해 데이터베이스에서 반환 된 레코드가없는 경우 나는 rs.getString (1)에 액세스하려고 할 때; 이 오류 "소진 결과 집합"을 얻었다.

    문제 전에, 내 코드했다 :

    rs.next();
    sNr= rs.getString(1);
    

    수정 후 :

    while (rs.next()) {
        sNr = rs.getString(1);
    }
    
  5. ==============================

    5.결과 집합 while 루프 사용한 외부 인 경우 예외가 발생한다. While 루프 내부의 ResultSet 관련된 모든 처리를 보관하십시오.

    결과 집합 while 루프 사용한 외부 인 경우 예외가 발생한다. While 루프 내부의 ResultSet 관련된 모든 처리를 보관하십시오.

  6. ==============================

    6.STMT 다른 결과 집합 butexpecting 재사용 될 때 일반적으로 발생, 새로운 STMT과하는 executeQuery를 creting보십시오. 그것은 나를 위해 그것을 고정!

    STMT 다른 결과 집합 butexpecting 재사용 될 때 일반적으로 발생, 새로운 STMT과하는 executeQuery를 creting보십시오. 그것은 나를 위해 그것을 고정!

  7. ==============================

    7.res.getInt (1) null이 아닌 것을 쉬르를 확인하시기 바랍니다. 이 널 (NULL)이 될 수 있으면 사용 정수 = null을 계산; 되지 INT 카운트 = 0;

    res.getInt (1) null이 아닌 것을 쉬르를 확인하시기 바랍니다. 이 널 (NULL)이 될 수 있으면 사용 정수 = null을 계산; 되지 INT 카운트 = 0;

    Integer count = null;
        if (rs! = null) (
                        while (rs.next ()) (
                            count = rs.getInt (1);
                        )
                    )
    
  8. ==============================

    8.오류 뒤에 문제 : 트랜잭션이 성공하고 테이블에 데이터를 삽입 한 후 사용자가 쿼리를 저지 해고해야하는 거래를 완료 할 때까지 액세스 Oracle 데이터베이스에 시도하는 경우에 당신이 할 수없는 것입니다 액세스 데이터를 삽입했다. 오라클 데이터베이스는 자동에 아니기 때문에 기본적으로 모드를 커밋합니다.

    오류 뒤에 문제 : 트랜잭션이 성공하고 테이블에 데이터를 삽입 한 후 사용자가 쿼리를 저지 해고해야하는 거래를 완료 할 때까지 액세스 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.
    
  9. ==============================

    9.당신이 resultSet.next () 메소드 전에 결과 집합을 사용하고 있기 때문에이 오류를 얻고있다.

    당신이 resultSet.next () 메소드 전에 결과 집합을 사용하고 있기 때문에이 오류를 얻고있다.

    의인이 사용 카운트를 얻으려면 :

    반면 (rs.next ()) `{    카운트 = rs.getInt (1);  }

    당신은 당신의 결과를 얻을 것이다.

  10. from https://stackoverflow.com/questions/3502005/java-sql-sqlexception-exhausted-resultset by cc-by-sa and MIT license