java.sql.SQLException: set di risultati esaurito

Ottengo l’errore java.sql.SQLException: Exexet ResultSet per eseguire una query su un database Oracle. La connessione avviene tramite un pool di connessioni definito in Websphere. Il codice eseguito è il seguente:

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

Prendo atto che il set di risultati contiene dati (rs.next ())

Grazie

Ho visto questo errore durante il tentativo di accedere a un valore di colonna dopo l’elaborazione del set di risultati.

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

Spero che questo ti possa aiutare 🙂

Prova questo:

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

Se rs.absolute(1) il set di risultati in cima, usando rs.absolute(1) non otterrai set di risultati esauriti.

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

Puoi anche usare rs.first () invece di rs.absolute (1), fa lo stesso.

Quando non ci sono record restituiti dal database per una particolare condizione e Quando ho provato ad accedere a rs.getString (1); Ho ricevuto questo errore “set di risultati esaurito”.

Prima del problema, il mio codice era:

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

Dopo la correzione:

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

Ciò si verifica in genere quando lo stmt viene riutilizzato, ma è in attesa di un diverso ResultSet, prova a creare un nuovo stmt ed executeQuery. Lo ha risolto per me!

Questa eccezione si verifica quando il ResultSet viene utilizzato al di fuori del ciclo while. Si prega di conservare tutte le elaborazioni relative al ResultSet all’interno del ciclo While.

Si prega di fare sur che res.getInt (1) non è nullo. Se può essere nullo, utilizzare Numero intero = null; e non int count = 0;

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

Problema dietro l’errore: se si sta tentando di accedere al database Oracle, non sarà ansible accedere ai dati inseriti fino a quando la transazione non avrà avuto esito positivo e per completare la transazione è necessario generare una query di commit dopo aver inserito i dati nella tabella. Poiché il database Oracle non si trova in modalità di commit automatico per impostazione predefinita.

Soluzione:

Vai a SQL PLUS e segui le seguenti domande ..

 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. 

Si sta verificando questo errore perché si sta utilizzando il resultSet prima del metodo resultSet.next ().

Per ottenere il conteggio basta usare questo:

while (rs.next ()) `{count = rs.getInt (1); }

Otterrai il tuo risultato.