11/02/10 10:14
symonx80
Ciao,
ho un semplice programma java che esegue una connessione ad un db oracle e effettua delle select su di esso.
Il programma dopo un poò che in runtime si interrompe con il seguente errore
java.sql.SQLException: Resultset esaurito
e non ne capisco il motivo.
Uso sempre lo stesso oggetto Connection . Uso un oggetto Statement stmt che chiudo ogni volta che termino di lavorare sulla query e resultSet differenti per ogni query, resulSet che chiudo insieme all'oggetto Statement al termine delle operazioni.
Devo scorrere un migliaio direcord ma dopo circa 300 l'elaborazione si interompe con quel messaggio.
Dove sbaglio?
Allego il codice
ho un semplice programma java che esegue una connessione ad un db oracle e effettua delle select su di esso.
Il programma dopo un poò che in runtime si interrompe con il seguente errore
java.sql.SQLException: Resultset esaurito
e non ne capisco il motivo.
Uso sempre lo stesso oggetto Connection . Uso un oggetto Statement stmt che chiudo ogni volta che termino di lavorare sulla query e resultSet differenti per ogni query, resulSet che chiudo insieme all'oggetto Statement al termine delle operazioni.
Devo scorrere un migliaio direcord ma dopo circa 300 l'elaborazione si interompe con quel messaggio.
Dove sbaglio?
Allego il codice
public static void main(String [] args){ Connection con = null; Statement stmt = null; ResultSet rs = null; PreparedStatement prep = null; ResultSet rsRecuperaUtente = null; ResultSet rsDatiRagSociale = null; ResultSet rsDatiConsumo = null; ResultSet rsImportoConsumo = null; ResultSet rsDatiTestata = null; ResultSet rsDatiDettaglio = null; PrintStream ps = null; //Connessione al database Oracle try { Class.forName("oracle.jdbc.driver.OracleDriver"); // Create a connection to the database String serverName = "##########"; String portNumber = "1521"; String sid = "####"; String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid; String username = "###"; String password = "###"; con = DriverManager.getConnection(url, username, password); //apro il file su cui andare a srivere .......................... ..................................... stmt = con.createStatement(); rs = stmt.executeQuery("SELECT U23C_BOL FROM KK_TESUTF2"); int contaBollette = 0; while (rs!=null && rs.next()) { String numBolletta = rs.getString("U23C_BOL"); ps.print("................................ contaBollette++; stmt = con.createStatement(); rsRecuperaUtente = stmt.executeQuery("select u32c_ute from KK_TESUTF2 where u23c_bol='" + numBolletta +"'"); rsRecuperaUtente.next(); int codUtente = rsRecuperaUtente.getInt("u32c_ute"); stmt.close(); rsRecuperaUtente.close(); stmt = con.createStatement(); rsDatiRagSociale = stmt.executeQuery("select ac_rg_cli from ce_an_clie where ac_c_cli='" + codUtente + "'"); rsDatiRagSociale.next(); ps.print......................... stmt.close(); rsDatiRagSociale.close(); stmt = con.createStatement(); rsDatiTestata = stmt.executeQuery("select * from KK_TESUTF2 where u23c_bol='" + numBolletta +"' "); rsDatiTestata.next(); ps.print(rsDatiTestata.getString("U92DE_VIA") + " " + rsDatiTestata.getString("U13C_N_CIV") + " "); ps.print(rsDatiTestata.getString("U92C_CAP") + " " + rsDatiTestata.getString("U92C_S_CAP")+ " " + rsDatiTestata.getString("U92DE_LOCA")); String dataIn = ............ String dataFn = ................. String dataEmis = ..................... ps.print................................................................ ps.println(""); stmt.close(); rsDatiTestata.close(); stmt = con.createStatement(); rsDatiConsumo = stmt.executeQuery("select (U21Q_L_ATU - U21Q_L_PRE) from ut_bl_cont where u21c_bol = '" + numBolletta +"'"); rsDatiConsumo.next(); ps.print(".................................................... stmt.close(); rsDatiConsumo.close(); stmt = con.createStatement(); rsImportoConsumo = stmt.executeQuery("SELECT U22C_BOL, U22C_IVA, U22C_A_IVA, SUM(U22VALONUM_E), U22IMIMPOS_E FROM KK_DETUTF2 WHERE U22C_BOL='" + numBolletta + "' and U18DE_VCE like 'IMPORTO GAS%' group by U22C_BOL, U22C_IVA, U22C_A_IVA, U22IMIMPOS_E"); if (rsImportoConsumo!=null) { rsImportoConsumo.next(); double impConsumo = rsImportoConsumo.getDouble(1); } stmt.close(); rsImportoConsumo.close(); } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ ps.close(); } }
Ultima modifica effettuata da symonx80 11/02/10 10:16
aaa