Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [JAVA] Problema inserire dati in un database

    Ciao a tutti, come da titolo, sto sviluppando un programma per la gestione di alcune pratiche, ho creato un Database che contiene l'anagrafica degli utenti in cui devo inserire anche due immagini.
    Il codice apparentemente non contiene errori però al momento di eseguirlo mi dice che c'è qualcosa di errato nella sintassi della QUERY che però è giusto.

    Vi allego il codice, spero che qualcuno possa dirmi dove sbaglio perchè già sto impazzendo!

    codice:
    public void inserisci_U(){        
            File foto1 = this.foto;
            File documento1 = this.documento;
            try{
                String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
                Class.forName(driver);
                String url = "jdbc:odbc:MY_DATA";
                  Connection con = DriverManager.getConnection(url, "username", "password");
                  String sql = new String ("INSERT INTO Anagrafica (nome,cognome,codiceF,causale,protocollo,archivio,dataNascita,data,gdf,cp,dogana,polmare,V01,V02,V04,V05,V06,V07,V08,V10,V11,V12,COLORE,DOCUMENTO,FOTO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?");
                  PreparedStatement cmd = con.prepareStatement(sql);
                  cmd.setString(1, this.nome);
                  cmd.setString(2, this.cognome);
                  cmd.setString(3, this.codiceF);
                  cmd.setString(4, this.causale);
                  cmd.setInt(5, this.protocollo);
                  cmd.setString(6, this.arch);
                  cmd.setString(7, this.dataNascita);
                  cmd.setString(8, this.data);
                  cmd.setString(9, this.pG);
                  cmd.setString(10, this.pC);
                  cmd.setString(11, this.pD);
                  cmd.setString(12, this.pP);
                  cmd.setString(13, this.V01);
                  cmd.setString(14, this.V02);
                  cmd.setString(15, this.V04);
                  cmd.setString(16, this.V05);
                  cmd.setString(17, this.V06);
                  cmd.setString(18, this.V07);
                  cmd.setString(19, this.V08);
                  cmd.setString(20, this.V10);
                  cmd.setString(21, this.V11);
                  cmd.setString(22, this.V12);
                  cmd.setString(23, this.colore);
                  //Passo foto utente al database
                  BufferedInputStream bis=new BufferedInputStream(new FileInputStream(documento1));
                  int fileLength = (int)documento1.length();
                  cmd.setBinaryStream(24, bis, fileLength);
                  //Passo documento utente al database
                  bis=new BufferedInputStream(new FileInputStream(foto1));
                  fileLength = (int)foto1.length();
                  cmd.setBinaryStream(25, bis, fileLength);
                  //eseguo query
                  cmd.executeQuery();
            }catch(SQLException | ClassNotFoundException | FileNotFoundException e){
                e.printStackTrace();
            }
        }

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    53
    potrebbe centrare il metodo executeQuery()? prova ad utilizzare executeUpdate().... cmq è un po' che non lo uso

  3. #3
    Ora provo e ti faccio sapere!!

    Intanto ti ringrazio a prescindere!

  4. #4
    Ciao ho provato come dici tu ma mi da sempre lo stesso errore, idee?

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Il numero di ? è corretto?
    I parametri che passi sono del tipo corretto?
    Se fai la query direttamente nel dbms funziona?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Quote Originariamente inviata da diabolik03 Visualizza il messaggio
    mi dice che c'è qualcosa di errato nella sintassi della QUERY
    Invece di cercare di dare una interpretazione dell'errore, posta esattamente il messaggio dell'eccezione e lo stackTrace completo.
    E' più facile aiutarti se le informazioni sono precise, piuttosto che delle descrizioni sommarie del problema.

    E posta il codice con le modifiche apportate: di sicuro, se stai effettuano una query di aggiornamento devi usare executeUpdate() e non executeQuery(), che serve solo per le query di selezione (che ritornano un ResultSet).


    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

  7. #7
    Allora il numero di parametri è corretto, anche il tipo di parametri è corretto (unica perplessita sono le immagini che passo al database nel DB sono oggetti OLE invece dal programma passo oggetti BLOB ma che io sappia dovrebbe funzionare) per quanto riguarda lo stack di errore ve lo posto:

    codice:
    java.sql.SQLException: [Microsoft][Driver ODBC Microsoft Access] Errore di sintassi nell'istruzione INSERT INTO.
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.SQLExecute(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(Unknown Source)
    at badge.Gestione.inserisci_U(Gestione.java:74)
    at badge.Gui$6.actionPerformed(Gui.java:699)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
    Quello che ho postato all'inizio è un metodo della classe Gestione che comunica con il database che a sua volta riceve i dati da un altra classe chiamata GUI che è l'interfaccia grafica che usa l'utente per inserire i dati.

    Spero di essere stato quanto più utile possibile!
    Ultima modifica di diabolik03; 21-11-2013 a 14:25

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    A dire il vero, lo stack trace che hai postato non aiuta affatto di più rispetto a quanto avevi già detto tu, ovvero di un "errore di sintassi".
    E allora ho guardato bene (e ripeto, bene) la query ed evidentemente né tu né altri l'hanno notato:

    VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ");

    manca la ) dopo l'ultimo ? che serve per chiudere il VALUES.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Hai ragione non me ero completamente accorto!!!

    ti ringrazio!!!

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.