sql >> Databasteknik >  >> RDS >> Mysql

Undantag i trådhuvudet com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Du har ett fel i din SQL-syntax

Det finns ingen anledning att skicka SQL-satsvariabeln till executeQuery för PreparedStatement . Det är huvudfrågan i ditt fall.

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

När du återställer sql som ska köras, satsen känns inte igen som en förberedd sats utan en instans av överordnad Statement som letar efter giltiga ingångar mellan citat för sting etc. som inte finns. Och därav är syntaxfelet.

Ändra :

ResultSet rs = preparedStatement.executeQuery(selectSQL);

Till :

ResultSet rs = preparedStatement.executeQuery();

Och det borde fungera.

Se :



  1. ÅR ger fel

  2. Hur LOG() fungerar i MariaDB

  3. Säkert alternativ till mysql_real_escape_string? (PHP)

  4. Hur får man PostgreSQL trigger och C# Windows Service att fungera tillsammans?