【问题标题】:JDBC - Inserting Date to database produces an errorJDBC - 将日期插入数据库会产生错误
【发布时间】:2012-11-21 13:37:55
【问题描述】:

尝试从 microsoft access 向我的数据库插入日期时出现此错误

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Undefined function 'to_date' in expression.
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) "
                 + "values(?,?,?,?,to_date('17-January-97', 'DD-Month-RR'),?,?,?)");

这是我执行语句的方式.. dc 是一个对象。 uname、fname、lname 等变量都是字符串。

                dc.addUserSt.setString(1, uname);
                dc.addUserSt.setString(2, fname);
                dc.addUserSt.setString(3, lname);
                dc.addUserSt.setString(4, gender);
                dc.addUserSt.setString(5, email);
                dc.addUserSt.setString(6, civil);
                dc.addUserSt.setString(7, pass);

                dc.addUserSt.executeUpdate();

我不知道为什么它说 to_date 函数是未定义的。 谁能帮我解决这个问题? 提前致谢。

【问题讨论】:

标签: java jdbc insert


【解决方案1】:

您需要使用CDate() 函数。这是 to_date() 的 Microsoft Access 版本。

【讨论】:

    【解决方案2】:

    to_date 是一个 Oracle 函数。而是使用 CDate,Access 等效项。

    【讨论】:

      【解决方案3】:

      函数to_date 是Oracle 特有的。由于您不是连接到 Oracle 而是连接到 Access,因此该功能不可用。不要使用特定于数据库的函数,而是考虑对日期和时间文字使用 JDBC 转义语法(在 JDBC 4.1 规范的 13.4.2 中指定;每个 JDBC 驱动程序都应该支持这些)。对于以下日期:

      {d 'yyyy-mm-dd'}
      

      因此,在您的具体示例中,您可以使用:

      values(?,?,?,?,{d '1997-01-17'},?,?,?)
      

      使用转义是一种抽象数据库之间差异的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-25
        相关资源
        最近更新 更多