执行预备语句时出现以下错误。我对我的数据库使用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时,程序运行完美。但是我需要获取当前日期以存储在数据库中。
任何帮助将不胜感激 :)

最佳答案

sysdate是无效函数。使用Date()代替。

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

09-16 00:42