
Originariamente inviata da
andbin
Se ci sono 7 '?' .... l'indice 8 non ci sta ....
E comunque se in una insert non metti tutti i campi, ne salti alcuni o non li metti nell'ordine di dichiarazione nella tabella, allora
dovresti elencare nell'insert i nomi delle colonne.
Dunque, ho controllato il database e la struttura č questa:
codice:
ID NOME COGNOME LISTA DATA ORA TOTALE CONSEGNATA NUMERO
Dove numero č un campo che ho definito incrementale come nella guida che andbin mi ha linkato, quindi con questa istruzione e non ci sono stati errori:
codice:
st.executeUpdate("CREATE TABLE TABELLA_PRENOTAZIONI" + "(ID VARCHAR(30), " + " NOME VARCHAR(30) NOT NULL, " +" COGNOME VARCHAR(30) NOT NULL, "+"LISTA VARCHAR(60),"+"DATA VARCHAR(8),"+"ORA VARCHAR(5),"+"TOTALE DOUBLE,"+"CONSEGNATA VARCHAR(2),"+"NUMERO INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), "+"PRIMARY KEY(ID,DATA))");
Per inserire una prenotazione di una pizza nel database c' č questo metodo dove non ho inserito il parametro NUMERO visto che č incrementale, quindi:
codice:
public void addPrenotazione(String id,String nome, String cognome, String lista, String data, String ora, String consegnata){
try{
DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver());
Connection conn = DriverManager.getConnection(url, user, pwd);
double totale=0;
StringTokenizer str=new StringTokenizer(lista,", ");
while (str.hasMoreTokens()) {
totale+=totale+getPrezzo(str.nextToken());
}
String sql = "INSERT INTO TABELLA_PRENOTAZIONI VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement prepStat = conn.prepareStatement(sql);
prepStat.setString(1, id);
prepStat.setString(2, nome);
prepStat.setString(3, cognome);
prepStat.setString(4, lista);
prepStat.setString(5, data);
prepStat.setString(6, ora);
prepStat.setDouble(7, totale);
prepStat.setString(8, consegnata);
prepStat.executeUpdate();
prepStat.close();
conn.close();
}
catch(SQLException e){System.out.println(e.getMessage());}
}
Perņ non funziona...