1

I am trying to execute this sql insert statement below but encountered an error which is listed below. Would appreciate some advise, thanks.

 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();
  } 
}

Error:

Java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Number of query values and destination fields are not the same. 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)

Here's the design view on ms-access:

enter image description here

4

3 回答 3

1

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

也许您的变量包含'和/或逗号。如果他们没有逃脱,那也可能会导致问题。您应该考虑使用参数绑定。

于 2012-11-10T21:47:07.343 回答
0

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

于 2013-07-08T16:38:41.773 回答
0

我认为你的插入应该是:

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

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

于 2012-11-10T21:57:21.790 回答