sql >> Database >  >> RDS >> Mysql

Uitzondering in hoofdthread com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:er is een fout in uw SQL-syntaxis

Het is niet nodig om de SQL-instructievariabele door te geven aan executeQuery voor PreparedStatement . Dat is het belangrijkste probleem in jouw geval.

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

Terwijl u reset de sql die moet worden uitgevoerd, wordt de instructie niet herkend als een voorbereide instructie, maar een instantie van de bovenliggende Statement die op zoek is naar geldige invoer tussen aanhalingstekens voor steken enz. Die niet aanwezig zijn. En vandaar de syntaxisfout.

Wijzigen :

ResultSet rs = preparedStatement.executeQuery(selectSQL);

Naar :

ResultSet rs = preparedStatement.executeQuery();

En het zou moeten werken.

Verwijzen :



  1. Een SQL Server Agent-taak maken met T-SQL

  2. mysql regex_replace gebruiken met een reguliere expressie

  3. Waarom is het uitvoeren van opgeslagen procedures sneller dan een SQL-query vanuit een script?

  4. Is het mogelijk om sql%rowcount te gebruiken voor SELECT?