0

準備されたステートメントを実行すると、次のエラーが発生します。データベースに 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);

パラメーターが少なすぎるというエラーが発生する理由がわかりません。準備されたステートメントに setString をうまく設定したと思います。sysdate を削除し、列の date_join も削除すると、プログラムは完全に実行されます。しかし、データベースに保存する現在の日付を取得する必要があります。どんな助けでも大歓迎です:)

4

1 に答える 1

2

sysdate は有効な関数ではありません。代わりに Date() を使用してください。

また、関数を使用するときは括弧を忘れないでください。

于 2012-11-24T17:16:48.207 に答える