|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2006
Città: Salerno
Messaggi: 238
|
[JAVA] apostrofo
in un 'applicazione client/server , dal lato client piglio un campo cognome di tipo stringa da memorizzare in un database in mysql.
Un primo problema riguardava il controllo del testo immesso, che poteva contenere solo lettere, spazi ed eventualmente l'apostrofo. Questo problema è stato risolto vedendo la stringa come un array di char ed applicando a ciauscun character i metodi isLetter(), isWhiteSpace() e controllando che sia ==\' Ora, un nuovo problema riguarda l'insert della stringa nel database quando questa contenga l'apostrofo: in tal caso, l'apostrofo del cognome viene confuso con l'apostrofo della sintassi sql, generando eccezione in java. Come posso risolvere il problema in modo che la visualizzazione sia corretta sia in java che in sql? Grazie. Antonio |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Apr 2004
Messaggi: 252
|
Codice:
nomeStringa = nomeStringa.replaceAll("'","\\'");
questo ti mette gli escape character di sql per l'apice e sei aposto |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
In teoria se usi un PreparedStatement il driver si occupa poi automaticamente degli escape. Dico in teoria perchè non ricordo più dove l'ho letto nè ricordo miei tentativi recenti in merito.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#4 | |
|
Member
Iscritto dal: Jun 2006
Città: Salerno
Messaggi: 238
|
Quote:
Codice:
INSERT INTO cliente VALUES ('hhhhjjjjkkkkllll', 'D'Anna', 'Luciano', '089816212');
java.sql.SQLException: [MySQL][ODBC 3.51 Driver][mysqld-5.0.19-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Anna', 'Luciano', '089816212')' at line 1
|
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Apr 2004
Messaggi: 252
|
Mmmm è successo anche a me pochi giorni fa, osprattutto quando recuperavo il testo da campo di testo tipo text e textarea
per scrupolo prova così : Codice:
nomeStringa = nomeStringa.replaceAll("\'","\\'");
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Insisto col PreparedStatement. Se fai una cosa tipo:
Codice:
PreparedStatement stat = connection.prepareStatement(
"INSERT INTO cliente VALUES (?, ?, ?, ?)");
stat.setString(1, "hhhhjjjjkkkkllll");
stat.setString(2, "D'Anna");
stat.setString(3, "Luciano");
stat.setString(4, "089816212");
stat.executeUpdate();
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:24.




















