sql >> Base de Datos >  >> RDS >> Mysql

MySQLSyntaxErrorException cerca? al intentar ejecutar PreparedStatement

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.