执行预备语句时出现以下错误。我对我的数据库使用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()代替。
并且在使用函数时不要忘记括号。