2017-03-02 42 views
-1

我不斷收到此錯誤JDBC的Java,行列數不匹配

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

我不知道爲什麼林收到這個錯誤我試着從約1小時解決此問題。

即時通訊嘗試添加新記錄到數據庫與一個用戶會讓我得到這個錯誤。

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

您插入更多或更少的值,因爲您的表具有列。 – Jens

+3

在SQL語句中使用普通字符串是非常麻煩的,因爲這些值可能包含引號和逗號,從而破壞了您的SQL語句。要知道發生了什麼,應將SQL字符串保存到臨時變量中,並打印出此變量以獲取實際執行的SQL。此外,您應該使用準備好的語句並使用JDBC API設置值。而且你應該添加你的表格的結構,否則給出一個正確的答案几乎是不可能的。 – dpr

+0

謝謝你們的幫助,我解決了這個問題,當我刪除它時,我有ID Key,一切都很順利 – Jakub

回答

2

不要以這種形式使用insert:

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

但使用明確列列表綁定變量

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

你的問題是,該表與您的VALUES條款中定義的列數不同。

插入的後一種形式禁用此問題,因爲您明確定義了插入的列。如果表格結構兼容升級(添加列),則插入保持有效事件。