Heim > Datenbank > MySQL-Tutorial > Hauptteil

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

Barbara Streisand
Freigeben: 2024-11-02 02:32:30
Original
999 Leute haben es durchsucht

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

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

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

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

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!