2017-03-02 2 views
-1

Ich erhalte diesen FehlerJDBC Java, Zeile Spaltenanzahl Mismatch

Caused by: org.hsqldb.HsqlException: row column count mismatch 

Ich habe keine Ahnung, warum Im diesen Fehler Im Versuch, dieses Problem von etwa 1 Stunde zu lösen.

Ich bekomme diesen Fehler, während ich versuche, einen neuen Datensatz zu Datenbank mit einem Benutzer zu machen.

if(ae.getActionCommand()=="Save") 
     { 
      stmt.executeUpdate("INSERT INTO Table2 VALUES('" + t.getText() + "','" + t10.getText() + "','" + t2.getText() + "','" + t3.getText() + "','" + t8.getText() + "','" + t12.getText() + "','" + t11.getText()+"')"); 
      dbClose(); 
      dbOpen(); 
+2

Sie fügen mehr oder weniger Werte ein, da Ihre Tabelle Spalten enthält. – Jens

+3

Es ist ziemlich unsachlich, einfache Strings in SQL-Anweisungen zu verwenden, da die Werte Anführungszeichen und Kommas enthalten können, die Ihre SQL-Anweisung unterbrechen. Um zu wissen, was passiert, sollten Sie Ihre SQL-Zeichenfolge in eine temporäre Variable speichern und diese Variable ausdrucken, um das tatsächlich ausgeführte SQL zu erhalten. Außerdem sollten Sie eine vorbereitete Anweisung verwenden und die Werte mithilfe der JDBC-API festlegen. Und Sie sollten auch die Struktur Ihres Tisches hinzufügen, ansonsten ist eine korrekte Antwort fast unmöglich. – dpr

+0

Danke Jungs für Hilfe, ich löste das Problem, ich hatte ID Key, wenn ich es gelöscht alles geht gut – Jakub

Antwort

2

nicht Einsatz in dieser Form Verwenden Sie:

INSERT INTO TAB (COL1, COL2, COL3) VALUES(?,?,?) 

Das Problem, das Sie haben, ist, dass die Tabelle:

INSERT INTO TAB VALUES(1,2,'x') 

aber verwenden explizite Spaltenliste und Bind-Variablen hat eine andere Anzahl von Spalten als in Ihrer VALUES-Klausel definiert.

Die letztere Art von Einfügung deaktiviert dieses Problem, wie Sie explizit definieren, welche Spalten eingefügt werden. Die Einfügung bleibt ein gültiges Ereignis, wenn die Tabellenstruktur kompatibel ist (Spalte hinzufügen).