Heim >Datenbank >MySQL-Tutorial >Warum löst meine Java-Anwendung beim Einfügen von Daten eine MySQLSyntaxError-Ausnahme aus?

Warum löst meine Java-Anwendung beim Einfügen von Daten eine MySQLSyntaxError-Ausnahme aus?

Barbara Streisand
Barbara StreisandOriginal
2024-11-02 02:32:301090Durchsuche

Why Does My Java Application Throw a MySQLSyntaxError Exception When Inserting Data?

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!

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