"invalid number", hai la certezza che "tCodice.getText()" ti restituisca un valore numerico ?
"invalid number", hai la certezza che "tCodice.getText()" ti restituisca un valore numerico ?
Allora ho controllato cosa restituisce tCodice.getText(), ti spiego
l'attributo nella tabella libro_id è dichiarato VARCHAR2 perchè l'id del libro non sempre è solo numerico, ma può contenere anche caratteri, ad esempio potrebbe essere settatao a '8924794497' , ma anche a BL82J12370';
tCodice.getText() mi restituisce una stringa, ho provato sia a metterla in una variabile String codice = tCodice.getText() e a stampare, sia a passare direttamente la variabile al comando sql.
Io ho controllato che VARCHAR2 corrisponde al tipo String in Java, infatti con inserimento, modifica e ricerca non ho avuto problemi.
Pensi sia questa stringa il problema?!!
Ci devo riflettere su![]()
![]()
Non hai pensato alla "quotatura" nella query:
" where libro_id="+tCodice.getText();
Avresti es.
where libro_id=BL82J12370
che non è SQL corretto. (EDIT: anzi sì tecnicamente è corretto ma presuppone che esista un campo BL82J12370 !)
Per questo motivo (e altri), si dovrebbe usare un PreparedStatement ... non un normale Statement.
Ultima modifica di andbin; 20-06-2015 a 15:22
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
Funzionaaaaaagrazie grazie grazie!!!!!!!!!! Spiego i dettagli, magari può servire a qualcuno
Allora, come consigliato da andbin, invece di usare Statement ho usato PreparedStatement, in questo modo:
Grazieeeeeeeeeeeecodice:PreparedStatement ps; String id=tCodice.getText(); ps =mycon.prepareStatement (cmd, ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); ps.setString(1,id); ps.execute(); //attenzione qui inizialmente avevo messo ps.execute(cmd) ma è sbagliato passare cmd![]()