0

执行准备好的语句时出现以下错误。我对我的数据库使用 ms-access

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 10.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3148)
.....

这是我准备好的声明

addUserSt = con.prepareStatement("insert into Accounts(Username, First_name, last_name, gender, birthday, email, civil_status, password, role, date_join) values(?,?,?,?,CDATE(?),?,?,?,?, sysdate)");

这就是我执行准备好的语句的方式......这里的变量都是字符串

                dc.addUserSt.setString(1, uname);
                dc.addUserSt.setString(2, fname);
                dc.addUserSt.setString(3, lname);
                dc.addUserSt.setString(4, gender);
                dc.addUserSt.setString(5, bday);
                dc.addUserSt.setString(6, email);
                dc.addUserSt.setString(7, civil);
                dc.addUserSt.setString(8, pass);
                dc.addUserSt.setString(9, role);

我不明白为什么我得到参数太少的错误,我认为我 setString 很好地准备了语句。当我删除 sysdate 并删除列中的 date_join 时,程序运行完美。但我需要获取当前日期以存储在数据库中。任何帮助将不胜感激 :)

4

1 回答 1

2

sysdate 不是有效的函数。请改用 Date()。

并且在使用函数时不要忘记括号。

于 2012-11-24T17:16:48.207 回答