JDBC - 将数据库插入数据库会产生错误

时间:2012-11-21 13:37:55

标签: java jdbc insert

尝试从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函数是未定义的。 任何人都可以帮我这个吗? 提前谢谢。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

to_date是一个Oracle函数。而是使用CD等效的Access。

答案 2 :(得分:0)

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

{d 'yyyy-mm-dd'}

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

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

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