ms访问中的查询值和目标字段数不同

时间:2012-11-10 21:44:22

标签: java sql ms-access

我正在尝试在下面执行此sql insert语句,但遇到下面列出的错误。非常感谢一些建议,谢谢。

 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:[Microsoft] [ODBC Microsoft Access Driver]查询值和目标字段的数量不同。     at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)     at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)     at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3109)     at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:337)     at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:287)

以下是ms-access的设计视图:

enter image description here

3 个答案:

答案 0 :(得分:1)

执行System.out.println(sql);或使用您的日志框架并直接在访问中尝试该语句。您可能在odbc上遇到不同数据类型的问题。否则声明对我来说很好。

也许您的变量包含'和/或逗号。如果不进行转义,这可能会导致问题。您应该考虑使用参数输入绑定。

答案 1 :(得分:0)

我认为你的插入应该是:

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

此外,您可能需要在执行插入操作之前将saleTotal从字符串转换为数字。

答案 2 :(得分:0)

这是因为逗号是系统上的小数分隔符。 value1是2.5,value2是3.2,但你有2,5,3,2(你希望2.5,3.2)