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

标签 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);

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

最佳答案

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

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

关于java - JDBC - 在准备好的语句中使用 sysdate 会产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13543431/

相关文章:

php - WHERE 子句在使用 mdbtools 的 SQL 查询中不起作用

.net - 为什么我的数据表单元格返回空值?

ms-access - VBA中变量的空值

Java DAO模式多表原子事务

java - 从oracle存储过程返回到Java的字符串为 '???'

java - 使用JSP注释时编译错误?

java - JAXB 中的编码/解码空值

java - 在 JAVA 中使用 Path 值创建 JSON 结构

控制台中的 Java 消息 - 两种方法具有相同的方法签名但不提供可分配的类?

java - getResources() 返回 null