JDBC meldet MySQLSyntaxError-Ausnahme mit gültiger Anweisung
In einer Java-Anwendung, die eine Verbindung zu einer MySQL-Datenbank herstellte, ist beim Versuch, neue einzufügen, eine Ausnahme aufgetreten Zeilen in eine Tabelle. Die MySQLSyntaxError-Ausnahme wurde ausgelöst, obwohl die INSERT-Anweisung bei Verwendung von MySQL Workbench erfolgreich ausgeführt wurde.
Der bereitgestellte Code lautet:
<code class="java">public static boolean aggiungiElem(String nome, GrafoGenerico g){ //... PreparedStatement sInserim=conn.prepareStatement(sqlCommandInserim); sInserim.setString(1, utente); sInserim.setString(2, nome); //sInserim.setObject(3,g); System.out.println(sInserim.toString()); sInserim.executeUpdate(sqlCommandInserim); sInserim.close(); return true; //... }</code>
Der Stack-Trace der Ausnahme ergab Folgendes:
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 '? , ? , DEFAULT , NULL )' at line 1
Ursache
Der Fehler deutet darauf hin, dass in der INSERT-Anweisung ein Syntaxproblem vorliegt. Bei der Überprüfung scheint die Aussage jedoch gültig zu sein.
Lösung
Das Problem liegt in der Zeile:
<code class="java">sInserim.executeUpdate(sqlCommandInserim);</code>
Diese Zeile versucht um die rohe SQL-Zeichenfolge auszuführen, anstatt das PreparedStatement mit den festgelegten Werten auszuführen. Die richtige Methode zum Ausführen von PreparedStatement ist:
<code class="java">sInserim.executeUpdate();</code>
Zusätzliche Überlegungen
Abgesehen von diesem spezifischen Problem ist es wichtig zu beachten, dass bei PreparedStatements Ressourcenlecks auftreten können nicht richtig verschlossen sind. Um dies zu verhindern, wird empfohlen, den „finally“-Block zum Schließen des PreparedStatement zusammen mit anderen Ressourcen wie Connection, Statement und ResultSet zu verwenden.
Das obige ist der detaillierte Inhalt vonWarum löst meine Java-Anwendung beim Einfügen von Daten eine MySQLSyntaxError-Ausnahme aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!