Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776

    [JAVA] Scrivere all'interno di un DB(derby), non riesco

    Ciao a tutti,

    ho problemi con questo codice.
    Sto cercando di scrivere de dati all'interno di un DB.
    Uso Derby
    Il DB si chiama 'Lezione22' e la tabella 'Employee'.
    La tabella e' generata con 3 campi varchar(50).
    Se provo ad inserire dei dati da console di comando del DB tramite:
    insert into Employee values ('pippo','pluto','aaa@aa.aa');
    tutto funziona correttamente
    se invece lo faccio in Java creando una istanza della classe e passando i 3 valori 'nome', 'cognome' e 'email', non mi scrive niente!!!
    Dove sbaglio?
    C'e' per caso un errore di sintessi nella query SQL?
    Ne ho provate tante ma sicuramente mi sfugge qualche cosa, qualche suggerimento?

    Grazie,
    Roberto

    codice:
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.*;
    public class ScriviDB {
        Connection conn=null;
        Statement stmt=null;
        ResultSet rs=null;
        
        public  void connetti(String nome, String cognome, String email) {
            try{
                Class.forName("org.apache.derby.jdbc.ClientDriver");
                conn= DriverManager.getConnection("jdbc:derby://localhost:1527/Lezione22"); 
                String sqlScrivi="insert into Employee values ('"+nome+"','"+cognome+"','"+email+"')";
                stmt=conn.createStatement();
                rs=stmt.executeQuery(sqlScrivi);
               
            } 
        
            catch (Exception exc){
            exc.printStackTrace();
            }
            
            finally{
                try{rs.close();
                stmt.close();
                conn.close();}
                catch(Exception e){
                e.printStackTrace();
    }
            }
    }
    }

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Non ho capito, ti lancia eccezione a runtime oppure il programma va ma non fa la insert?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Il programma funziona , non lancia EXC.
    ...pero' non scrive all'interno del DB

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    RETTIFICO QUANTO DETTO!!!
    Ho aggiunto del codice al metodo in modo che mi restituisca L'ERRORE se viene lanciata l'exception stessa(la stampo a video sul navigatore), non vedevo alcuna EXC perche' ero sul web, facendo il return dell'exception mi compare:

    ************************************************** *****
    java.sql.SQLException: executeQuery method can not be used for update.
    ************************************************** *****

    SCUSATE IL DISGUIDO!!!MA SONO ALLE PRIME ARMI........

    il codice modificato e' questo:
    codice:
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.*;
    public class LeggiDB {
        Connection conn=null;
        Statement stmt=null;
        ResultSet rs=null;
        
        public  String connetti(String nome, String cognome, String email) {
            try{
                Class.forName("org.apache.derby.jdbc.ClientDriver");
                conn= DriverManager.getConnection("jdbc:derby://localhost:1527/Lezione22"); 
                String sqlScrivi="insert into Employee values ('"+nome+"','"+cognome+"','"+email+"')";
                stmt=conn.createStatement();
                rs=stmt.executeQuery(sqlScrivi);
                return null;
               
            } 
        
            catch (Exception exc){
            exc.printStackTrace();
            String errore=exc.toString();
            return errore;
            }
            
            finally{
                try{rs.close();stmt.close();conn.close();}
                catch(Exception e){e.printStackTrace();}
                
            }
    }
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    147
    L'eccezione ti dice già tutto: per operazioni di update non puoi usare la funzione executeQuery()... Prova con executeUpdate()...
    Dai anche un'occhiata al corretto utilizzo di tipi/valori di ritorno di una funzione... NULL oppure l'eccezione non è molto ortodosso...

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Perfetto, con:
    executeUpdate()
    FUNZIONA!!!

    Grazie mille!!!

    Dai anche un'occhiata al corretto utilizzo di tipi/valori di ritorno di una funzione... NULL oppure l'eccezione non è molto ortodosso...
    Li avevo utilizzati solo per capire semplicemente quale dei due rami venisse eseguito, il 'try' o il 'catch', inizialmente non c'erano!


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.