com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, auf die richtige Syntax für die Verwendung in der Nähe von „? oder Mitgliedsname =?' in Zeile 1
MySQL versteht die Bedeutung von ?
nicht in der SQL-Abfrage. Es ist tatsächlich eine ungültige SQL-Syntax. Also irgendwie wurde es nicht durch PreparedStatement
ersetzt . Und weißt du was?
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(query); // Fail!
Sie überschreiben die vorbereitete Abfrage mit der ursprünglichen Abfrage! Sie müssen den argumentlosen PreparedStatement#executeQuery()
Methode anstelle von Statement#executeQuery(String)
.
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(); // OK!
Unabhängig vom Problem verliert Ihr Code Ressourcen. Die DB wird nach einigen Stunden aufgebraucht sein und Ihre Anwendung wird abstürzen. Um dies zu beheben, müssen Sie dem JDBC-Idiom zum Schließen von Connection
folgen , Statement
und ResultSet
im finally
Block des try
blockieren, wo sie erworben wurden. Sehen Sie sich das Grundlegende Tutorial zu JDBC
an für mehr Details.