执行预准备语句时出现以下错误。我对我的数据库使用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时,程序运行完美。但我需要将当前日期存储在数据库中。 任何帮助将不胜感激:)
答案 0 :(得分:2)
sysdate是无效的功能。请改用日期()。
使用函数时不要忘记括号。