Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175

    Java & Oracle - No ResultSet was produced

    Ho questo codice in java, la query inviata invoca la procedura add_sinric.
    codice:
    private void btnAggiungiActionPerformed(java.awt.event.ActionEvent evt) {                                            
            lstItemId.setSelectedIndex(lstItem.getSelectedIndex());
            ResultSet ins=null;
            if(param.equals("sin")) {
                ins = mdbc.inviaQuery("BEGIN add_sinric("+id_r+", "+lstItemId.getSelectedValue()+"); END;");
            } else if(param.equals("mal")) {
                // handler malattie
            } else if(param.equals("anl")) {
                // handler analisi
            }
            
            mdbc.close(ins);
        }
    Questa è la funzione che esegue la query.
    codice:
        public ResultSet inviaQuery(String query) {
            ResultSet rs=null;
            try{
                stmt = myConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
                rs=stmt.executeQuery(query);
            }
            catch(Exception e){
                alerts.showErr(e.getMessage());
            }
            return rs;
        }
    La coppia di add_sinric esegue correttamente l'inserimento, ma mi da anche un warning: No ResultSet was Produced, perchè? Come posso evitarlo?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Per gli inserimenti non dovresti usare
    codice:
    stmt.executeQuery(query);
    Un inserimento non produce ovviamente nessun ResulSet al contrario di un interrogazione.
    Per gli inserimenti e gli update usa invece
    codice:
    stmt.executeUpdate(query);
    che ritorna un int (numero di righe della tabella coinvolte dall'operazione).

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    quindi modifico eseguiQuery usando executeUpdate al posto di executeQuery, ma stmt come lo uso? Nel senso:
    codice:
    stmt = myConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    come lo modifico?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Beh, quella riga la puoi anche modificare, anche se dovrebbe funzionare comunque.
    Al massimo metti cosi':
    codice:
    public int inviaQuery(String query) {
            int i;
            try{
                Statement stmt = myConnection.createStatement();
                i = stmt.executeUpdate(query);
            }
            catch(Exception e){
                alerts.showErr(e.getMessage());
            }
            return i;
        }

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    alla fine poi non c'è neanche da chiudere il ResultSet, giusto?

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    No. Il ResultSet ti serve quando fai un interrogazione (SELECT) per scorrere i risultati della stessa. In caso di INSERT, come ti aveva gia' segnalato il tuo codice, non hai nessun ResultSet.

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.