com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Você tem um erro em sua sintaxe SQL; verifique o manual que corresponde à versão do seu servidor MySQL para a sintaxe correta a ser usada perto de '? ou MemberName =?' na linha 1
MySQL não entende o significado de
?
na consulta SQL. É realmente uma sintaxe SQL inválida. Então, de alguma forma, não foi substituído por PreparedStatement
. E adivinha? PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(query); // Fail!
Você está substituindo a consulta preparada pela consulta original! Você precisa chamar o
PreparedStatement#executeQuery()
método em vez de Statement#executeQuery(String)
. PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(); // OK!
Não relacionado ao problema, seu código está vazando recursos. O banco de dados ficará sem eles após várias horas e seu aplicativo travará. Para corrigir isso, você precisa seguir o idioma JDBC de fechar
Connection
, Statement
e ResultSet
no finally
bloco do try
bloco onde foram adquiridos. Confira o tutorial básico de JDBC
para mais detalhes.