Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQLSyntaxErrorException w pobliżu ? podczas próby wykonania Przygotowanego Oświadczenia

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Wystąpił błąd w składni SQL; sprawdź w instrukcji, która odpowiada Twojej wersji serwera MySQL, jaka jest właściwa składnia w pobliżu „? lub Nazwa Członka =?' w wierszu 1

MySQL nie rozumie znaczenia ? w zapytaniu SQL. To rzeczywiście nieprawidłowa składnia SQL. Więc jakoś nie został zastąpiony przez PreparedStatement . I wiecie co?

PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);        
rs = s.executeQuery(query); // Fail!

Zastępujesz przygotowane zapytanie oryginalnym zapytaniem! Musisz wywołać bezargumentowe PreparedStatement#executeQuery() metoda zamiast Statement#executeQuery(String) .

PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);        
rs = s.executeQuery(); // OK!

Niezwiązany z problemem, Twój kod przecieka zasoby. Baza danych wyczerpie się po kilku godzinach i aplikacja ulegnie awarii. Aby to naprawić, musisz postępować zgodnie z idiomem JDBC zamykania Connection , Statement i ResultSet w finally blok try bloku, w którym zostały nabyte. Zapoznaj się z podstawowym samouczkiem JDBC po więcej szczegółów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dopasowanie wszystkich wartości w klauzuli IN

  2. JSON_ARRAY_APPEND() – Dołącz wartości do tablicy JSON w MySQL

  3. Błąd krytyczny:wywołanie funkcji elementu członkowskiego query() na null

  4. Jak działa funkcja FROM_BASE64() w MySQL

  5. Usuń tagi HTML z rekordu