com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:si è verificato un errore nella sintassi SQL; controlla il manuale che corrisponde alla versione del tuo server MySQL per la sintassi corretta da usare vicino a '? o NomeMembro =?' alla riga 1
MySQL non comprende il significato di ?
nella query SQL. È davvero una sintassi SQL non valida. Quindi in qualche modo non è stato sostituito da PreparedStatement
. E indovina un po'?
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(query); // Fail!
Stai sovrascrivendo la query preparata con la query originale! È necessario chiamare l'argomento PreparedStatement#executeQuery()
metodo invece di Statement#executeQuery(String)
.
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(); // OK!
Non correlato al problema, il tuo codice perde risorse. Il DB si esaurirà dopo diverse ore e l'applicazione andrà in crash. Per risolvere questo problema, devi seguire l'idioma JDBC di chiusura di Connection
, Statement
e ResultSet
nel finally
blocco del try
blocco in cui sono stati acquisiti. Consulta il esercitazione di base JDBC
per maggiori dettagli.