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
Freigeben: 2024-10-31 00:48:29
Original
454 Leute haben es durchsucht

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>
Nach dem Login kopieren

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
Nach dem Login kopieren

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>
Nach dem Login kopieren

Die korrekte Syntax zum Ausführen einer vorbereiteten Anweisung lautet:

<code class="java">rs = stmt.executeQuery();</code>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage