Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    168

    Problemi recordset

    Ciao ragazzi....il mio problema kn i recordset è il seguente:
    ho un recordset chiamato rec1 e gli imposto una select kn relativo ciclo while...
    all'interno di esso mi servirebbe un altro recordset ke effettuera una query diversa....
    esempio:


    codice:
    Recordset rs = conn.executeQuery("SELECT ID_ARGOMENTO FROM ARGOMENTI");
    
       while(rs.next())
        {
          
         //x sarà un valore intero ma ho preferito usare getString
         x = rs.getString("ID_ARGOMENTO");
    
         Recordset rs2 = conn.executeQuery("SELECT * FROM ARGOMENTI WHERE ID_ARGOMETNTO = " + x);
       
        while(rs2.next())
        {
       
        //altre operazione
        }
    
    
        }
    L'errore ke mi da è il seguente: Recordset is closed

    Spero ke sono stato chiaro....
    GRAZIE A TUTTI

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Da documentazione:
    A ResultSet object is automatically closed when the Statement object that generated it is closed, re-executed, or used to retrieve the next result from a sequence of multiple results.
    Sicuramente RecordSet si comporta allo stesso modo.
    Quando tu chiami la seconda volta il metodo executeQuery, causi la chiusura dei RecordSet precedentemente utilizzati da conn. Ti servono due istanze diverse di questo oggetto (conn1 e conn2?).

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    168
    avevo già provato e mi dava lo stesso problema....
    uffa

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Posta tutto il codice (se e' lungo, solo il metodo). E lo StackTrace dell'eccezione.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Puoi risolvere scorrendo la prima volta tutto il recordset e memorizzando tutti i valori che ti servono in un Vector di stringhe, quindi eseguire tante query quanti sono gli elementi del vettore. Brevemente:
    codice:
    Recordset rs = conn.executeQuery("SELECT ID_ARGOMENTO FROM ARGOMENTI");
    Vector elementi = new Vector();
    
    while(rs.next()) {
       elementi.add( rs.getString("ID_ARGOMENTO") );
    }
    
    // Ora eseguo tutte le query con i valori del recordset precedente
    Recordset rs2 = null;
    String id = "";
    for(int j=0; j<elementi.size(); j++) {
       id = (String) elementi.elementAt(j);
       rs2 = conn.executeQuery("SELECT * FROM ARGOMENTI WHERE ID_ARGOMETNTO = " + id);
    
       while(rs2.next()) {
          //altre operazione
       }
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.