2012-11-10 50 views
1

我試圖執行下面的SQL插入語句,但遇到下面列出的錯誤。希望得到一些建議,謝謝。在ms訪問中查詢值和目標字段的數量不相同

public void addSale(String saleDetails, String saleTotal) 
         throws ClassNotFoundException, SQLException { 

    Statement myStatement = getConnection(); 
    String sql = "INSERT INTO Sale (SaleDetails, SaleTotal) VALUES ('"+saleDetails+"','"+saleTotal+"')"; 

    myStatement.executeUpdate(sql); 
    closeConnection(); 
    } 
} 

錯誤:

值java.sql.SQLException:[微軟] [ODBC Microsoft Access驅動程序]查詢值和目標字段數是不一樣的。 在sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956) 在sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113) 在sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc。 Java的:3109) 在sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:337) 在sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:287)

下面是關於MS的設計視圖 - 訪問:

enter image description here

+0

你可能在salesDetails變量中有一個報價或者某些東西。考慮使用準備好的聲明。除了避免這種錯誤,他們更安全。 – Marvo

回答

1

做一個System.out.println(sql);或使用你的日誌框架,並嘗試THA t語句直接在訪問中。有可能您在使用odbc的不同數據類型時遇到問題。否則,該聲明對我來說看起來很好。

也許你的變量包含'和/或逗號。如果他們沒有逃脫,這也可能導致問題。你應該考慮使用參數綁定。

0

我覺得您的插入應該是:

String sql = "INSERT INTO Sale (SaleDetails, SaleTotal) VALUES (" + saleDetails + ", " + saleTotal + ")"; 

此外,你可能需要做插入之前saleTotal從字符串轉換爲數字。

+0

使更改得到相同的錯誤 – Adesh

+0

嗨,詹姆斯,SaleDetails是一個文本/備忘錄數據類型,需要引用和任何單引號需要用兩個單引號替換,但SaleTotal是一個數字,正如你注意到的,並且不需要引號。理想情況下,OP應該使用參數。 – Fionnuala

0

這是因爲逗號作爲系統上的小數點分隔符。 value1是2.5,value2是3.2,但你得到2,5,3,2(你希望2.5,3.2)

相關問題