PDA

View Full Version : [JAVA-SQL]: La delete non funziona, ma il codice non da errori.


ShadowX84
09-07-2007, 09:11
Salve,

Ho qui un metodo che dovrebbe cancellare un record da una tabella, il programma non mi rileva errori e va in esecuzione, quando però arriva il momento di eseguire la query, mi genera un eccezione SQL, qualcuno può indicarmi dove stò sbagliando?


public int cancellaRecord(String cognome){
try{
conn.setAutoCommit(false);
conn.commit();
String sql = "delete form prv_java_anagra where cognome = ?";
PreparedStatement dbst;
dbst = conn.prepareStatement(sql);
dbst.clearParameters();
try{
dbst.setString(3, cognome);
dbst.executeUpdate();
}catch(SQLException ex){
return 1;
}
conn.commit();
conn.setAutoCommit(true);
}catch(Exception ex){
try{
conn.rollback();
}catch(SQLException ex2){
return 1;
}
return 2;
}
return 0;
}

andbin
09-07-2007, 09:19
dbst.setString(3, cognome);A "occhio" (e nota non conoscendo JDBC), direi che quel 3 non va, visto che hai solo 1 parametro.

ShadowX84
09-07-2007, 09:29
A "occhio" (e nota non conoscendo JDBC), direi che quel 3 non va, visto che hai solo 1 parametro.


Si, in effetti non è motlo logico.

Avevo provato anche mettendoci 1, ma il risulatato non cambia, la risposta che ottengo è sempre un'eccezione.

ShadowX84
09-07-2007, 12:00
Altri consigli e/o suggerimenti?

RaouL_BennetH
09-07-2007, 13:12
Non è che semplicemente hai sbagliato a scrivere nel comando sql?



String sql = "delete form prv_java_anagra where cognome = ?";

Non dovrebbe essere "from" ??



Inoltre ho un altro piccolo dubbio;

Il valore che devi confrontare (cognome) sembra essere associato ad un sql parameter (il tuo "?"), ma dove hai inizializzato il sql parameter per dirgli che il suo valore è "cognome" ?

ShadowX84
09-07-2007, 13:43
Non è che semplicemente hai sbagliato a scrivere nel comando sql?



String sql = "delete form prv_java_anagra where cognome = ?";

Non dovrebbe essere "from" ??



Inoltre ho un altro piccolo dubbio;

Il valore che devi confrontare (cognome) sembra essere associato ad un sql parameter (il tuo "?"), ma dove hai inizializzato il sql parameter per dirgli che il suo valore è "cognome" ?

:stordita: ===> :fagiano: ===> :cry: ===> :muro:

2 Giorni...D U E giorni...

Adesso funziona tutto correttamente.
Grazie mille.

RaouL_BennetH
09-07-2007, 13:59
:stordita: ===> :fagiano: ===> :cry: ===> :muro:

2 Giorni...D U E giorni...

Adesso funziona tutto correttamente.
Grazie mille.

Di nulla...

Se posso però darti un piccolo consiglio su una delete da una tabella, faresti meglio a non usare il cognome come valore di riferimento.

Fin quando hai tutti cognomi diversi, va bene, ma se per caso hai due o più persone con lo stesso cognome le elimini tutte.

Non avrebbe senso nemmeno metterci un LIMIT 1 per eliminarne uno solo... difatti come farebbe il programma a capire quale nello specifico eliminare?

ShadowX84
09-07-2007, 14:08
Di nulla...

Se posso però darti un piccolo consiglio su una delete da una tabella, faresti meglio a non usare il cognome come valore di riferimento.

Fin quando hai tutti cognomi diversi, va bene, ma se per caso hai due o più persone con lo stesso cognome le elimini tutte.

Non avrebbe senso nemmeno metterci un LIMIT 1 per eliminarne uno solo... difatti come farebbe il programma a capire quale nello specifico eliminare?

I consigli son sembre bene accetti ;)

Avevo pensato al problema di un doppio cognome, o anche di omonimia, e durante lo sviluppo di questo programmino vedrò di gestire tali circostanze.

La mia attuale esigenza era che funzionasse quel metodo.
E' un programma che stò "sviluppando" per togliermi un pò di ruggine e soprattutto per imparare un pò di basi di programmazione, quindi è tutt'altro che un'opera "perfetta"

Grazie ancora :)