Vorbereitete MySQL-Anweisung: Überwindung des Fehlers „MySQLSyntaxErrorException“
Bei der Verwendung vorbereiteter Anweisungen in JDBC für MySQL ist es wichtig, die richtige Syntax sicherzustellen und Verwendung. Ein häufiger Fehler, mit dem Entwickler konfrontiert werden, ist die „MySQLSyntaxErrorException“. Lassen Sie uns einen bestimmten Fall dieses Fehlers und die entsprechende Lösung untersuchen.
Problem:
Bei einer Java-basierten Anwendung, die den MySQL-Connector verwendet, tritt beim Ausführen einer „MySQLSyntaxErrorException“ eine „MySQLSyntaxErrorException“ auf vorbereitete Stellungnahme. Der Code verwendet die folgende Anweisung zum Datenabruf:
<code class="java">PreparedStatement stmt = con.prepareStatement(selectSQL); stmt.setInt(1, ad_id); rs = stmt.executeQuery(selectSQL);</code>
Bei der Ausführung wird der Fehler ausgegeben.
Fehlermeldung:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1
Lösung:
Der Fehler liegt in der Syntax der Ausführung der vorbereiteten Anweisung. Insbesondere ist die folgende Zeile falsch:
<code class="java">rs = stmt.executeQuery(selectSQL);</code>
Die korrekte Syntax zum Ausführen einer vorbereiteten Anweisung lautet:
<code class="java">rs = stmt.executeQuery();</code>
Durch Weglassen des selectSQL-Arguments in der MethodeexecuteQuery wird die Anweisung ausgeführt korrekt und der Fehler ist behoben.
Erklärung:
In einer vorbereiteten Anweisung wird die SQL-Abfrage während der Anweisungsvorbereitung übergeben und die Parameter werden separat mithilfe von festgelegt setX-Methoden (z. B. setInt). Die Methode „executeQuery“ wird zum Abrufen der Ergebnismenge verwendet, die ohne Argumente aufgerufen werden sollte. Der ursprüngliche Code enthielt fälschlicherweise die SQL-Abfragezeichenfolge im Aufruf der Methode „executeQuery“, was den Syntaxfehler verursachte.
Das obige ist der detaillierte Inhalt vonWarum löst meine vorbereitete Anweisung in MySQL JDBC eine „MySQLSyntaxErrorException“ aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!