Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    196

    [JSP]Ciclo while

    salve ,ho il seguente problema devo fare una query che mi carica dei dati secondo una condizione poi vorrei che in merito ai dati caricati mi aggiorni la tabella mi spiego meglio
    devo selezionare da una tabella tutti i libri in prestito che scadono oggi e poi devo settare, in un'altra tabella, a disponibile lo stato di questi libri, eseguendo questo codice

    " ResultSet rs;
    rs = statement.executeQuery("select * from \"prenotaLibro\" where (\"prenotaLibro\".\"richiestaPrestito\" -current_date)<0");
    while(rs.next()){
    String codiceLibro = rs.getString("codiceLibro");
    statement.executeUpdate("update \"libro\" SET disp=(true) where \"codiceLibro\"='"+codiceLibro+"'");
    }
    %>
    l'errore che mi dà è il seguente
    javax.servlet.ServletException: ResultSet is closed
    dove sbaglio

  2. #2
    mmm... difficile da capire...
    potrebbe essere che il result set è vuoto e quindi da l'errore...
    hai provato la query sulla console del db? (che db usi?)

  3. #3
    oppure...
    dentro il while prova ad usare un prepared statement invece di uno statement

    codice:
     ResultSet rs;
    rs = statement.executeQuery("select * from \"prenotaLibro\" where (\"prenotaLibro\".\"richiestaPrestito\" -current_date)<0"); 
    String update="update libro SET disp=(true) where codiceLibro=?";//ho tolto gli /" non so a cosa ti servano, se è per sintassi del db reinseriscili
    PreparedStatement ps=connessione.prepareStatement(update);
    while(rs.next()){
    String codiceLibro = rs.getString("codiceLibro");
    ps.setString(1,codiceLibro);
    ps.executeUpdate();
    }
    in effetti ti conviene usare in ogni caso il preparedStatement, così la query viene compilata solo una volta e non ogni volta che la esegue!

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    196

    risolto

    ho risloto con questa query

    update libro set disp = true
    where libro."codiceLibro" in
    (SELECT "prenotaLibro"."codiceLibro" from "prenotaLibro"
    where ("richiestaPrestito"-current_date)<0);

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.