JDBC - 在预准备语句中使用sysdate会产生错误

时间:2012-11-24 17:04:08

标签: java ms-access jdbc

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

1 个答案:

答案 0 :(得分:2)

sysdate是无效的功能。请改用日期()。

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