Mysql
 sql >> Base de données >  >> RDS >> Mysql

Exception dans le thread principal com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException :vous avez une erreur dans votre syntaxe SQL

Il n'est pas nécessaire de passer la variable d'instruction sql à executeQuery pour PreparedStatement . C'est le principal problème dans votre cas.

PreparedStatement preparedStatement = connection.prepareStatement(selectSQL);
preparedStatement.setString(1, lexiconType);
preparedStatement.setString(2, lemma);
// error is in the following statement
ResultSet rs = preparedStatement.executeQuery(selectSQL);

Pendant que vous réinitialisez le SQL à exécuter, l'instruction n'est pas reconnue comme une instruction préparée mais comme une instance du parent Statement qui recherche des entrées valides entre guillemets pour les piqûres, etc. qui ne sont pas présentes. Et d'où l'erreur de syntaxe.

Modifier :

ResultSet rs = preparedStatement.executeQuery(selectSQL);

À :

ResultSet rs = preparedStatement.executeQuery();

Et ça devrait marcher.

Référer :