尝试从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函数是未定义的。 任何人都可以帮我这个吗? 提前谢谢。
答案 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'},?,?,?)
使用转义是一种抽象数据库之间差异的方法。