PDA

View Full Version : [Java][db access]problema con INSERT INTO


ZanTeo
01-11-2011, 14:12
Salve ragazzi, ho un problema con l'insert into, ho creato un main dove prima inserisco dei valori nel db e poi stamparli. La classe non mi segnala nessun errore ma quando la eseguo la parte di codice relativa all'insert into genera un errore.
Il codice è:
import java.util.Vector;
public class TestInserimentoDB {
/**
* @param args
*/
public static void main(String[] args) {
String [][] parametri = {{"DRIVER", "Microsoft Access Driver (*.mdb)"},
{"DBQ", "EstrattorePDF.mdb"}};
DatabaseBridge db=new DatabaseBridge("",parametri);
if ( !db.connetti() ) {
System.out.println("Errore durante la connessione!");
System.out.println( db.getErrore() );
System.exit(0);
}
else
System.out.println("Connessione ok");
db.eseguiQuery("INSERT INTO files (ID,NomeFile,protetto,processato,DataUltimoProcesso) " +
"VALUES (#"
+ "'1'"
+ "'prima prova'"
+ "'0'"
+ "'1'"
+ "'31/10/2011'"
);
@SuppressWarnings("rawtypes")
Vector v = db.eseguiQuery("SELECT * FROM files;");
int i=0;
while ( i<v.size() ) {
System.out.println("Record numero " + (i+1));
String [] record = (String[]) v.elementAt(i);
for (int j=0; j<record.length; j++)
System.out.println( record[j] );
}
if ( !db.eseguiAggiornamento("UPDATE files SET campo=valore WHERE campo>1;") ) {
System.out.println("Errore nell'aggiornamento!");
System.out.println( db.getErrore() );
}
db.disconnetti();
System.out.println("Disconnessione ok");
}
}
L'errore stampato è:
Connessione ok
java.sql.SQLException: [Microsoft][Driver ODBC Microsoft Access] Errore di sintassi nella data nell'espressione della query '#'1''prima prova''0''1''31/10/2011''.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(Unknown Source)
at test.DatabaseBridge.eseguiQuery(DatabaseBridge.java:70)
at test.TestInserimentoDB.main(TestInserimentoDB.java:21)
Disconnessione ok
l'errore è segnalato nel campo data, ma è scritto conforme al db, ho provato anche ad usare solo mese anno ma l'errore è sempre quello, forse devo usare dei tipi diversi di apicetti

wingman87
01-11-2011, 18:45
I valori devono essere separati da virgola. E il cancelletto a cosa serve?

ZanTeo
01-11-2011, 20:14
I valori devono essere separati da virgola. E il cancelletto a cosa serve?
Intendi in questo modo:
db.eseguiQuery("INSERT INTO files (ID,NomeFile,protetto,processato,DataUltimoProcesso) VALUES ("'1'","'prima prova'","'0'","'1'","'10/2011'");
così mi da che tutta la linea di codice è un errore.
Per aiutarti a capire meglio la struttura ti dico cosa è ogni singolo componente:

ID (chiave della tabella) intero - long
NomeFile VarChar - testo
protetto bit (booleano)
processato bit (booleano)
DataUltimoUtilizzo DateTime [data/ora]