1

マイクロソフトアクセスからデータベースに日付を挿入しようとすると、このエラーが発生します

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関数が未定義であると表示される理由がわかりません。誰かがこれで私を助けることができますか?前もって感謝します。

4

3 に答える 3

2

関数を使用する必要がありCDate()ます。これは、to_date()のMicrosoftAccessバージョンです。

于 2012-11-21T13:41:17.137 に答える
1

to_dateはOracle関数です。むしろ、Accessと同等のCDateを使用してください。

于 2012-11-21T13:44:15.523 に答える
0

この関数to_dateはOracleに固有です。OracleではなくAccessに接続しているため、この機能は使用できません。データベース固有の関数を使用する代わりに、日付と時刻のリテラルにJDBCエスケープ構文を使用することを検討してください(JDBC 4.1仕様の13.4.2で指定されているように、すべてのJDBCドライバーはそれらをサポートする必要があります)。次のような日付の場合:

{d 'yyyy-mm-dd'}

したがって、特定の例では、次を使用できます。

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

エスケープを使用することは、データベース間の違いを抽象化する方法です。

于 2012-11-21T16:27:02.787 に答える