Heim >Datenbank >MySQL-Tutorial >Warum löst meine vorbereitete Anweisung in MySQL JDBC eine „MySQLSyntaxErrorException' aus?

Warum löst meine vorbereitete Anweisung in MySQL JDBC eine „MySQLSyntaxErrorException' aus?

Barbara Streisand
Barbara StreisandOriginal
2024-10-31 00:48:29452Durchsuche

Why Does My Prepared Statement in MySQL JDBC Throw a

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn