com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Tiene un error en su sintaxis SQL; Consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de '? o NombreMiembro =?' en la línea 1
MySQL no entiende el significado de ?
en la consulta SQL. De hecho, es una sintaxis SQL no válida. Entonces, de alguna manera, no ha sido reemplazado por PreparedStatement
. ¿Y adivina qué?
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(query); // Fail!
¡Está anulando la consulta preparada con la consulta original! Debe llamar al método sin argumentos PreparedStatement#executeQuery()
método en lugar de Statement#executeQuery(String)
.
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(); // OK!
Sin relación con el problema, su código está perdiendo recursos. La base de datos se agotará después de varias horas y su aplicación fallará. Para solucionar esto, debe seguir el modismo JDBC de cerrar Connection
, Statement
y ResultSet
en el finally
bloque del try
bloque donde han sido adquiridas. Consulte el tutorial básico de JDBC
para más detalles.