0

次のJDBCステートメントを使用して、JavaからOracleDBにいくつかの値を挿入しようとしています。

String SQL_PREP_INSERT = "INSERT INTO ABC.TEST (LOG_ID, SESSION_ID,USER_ID) VALUES"
            + " (ABC.logid_seq.nextval, ?, ?)";

stmt = con.prepareStatement(SQL_PREP_INSERT);
stmt.setString(1, sessionId);
stmt.setString(2, userid);
stmt.execute();
stmt.close();

シーケンスは次のように作成されます。

create sequence  ABC.logid_seq
minvalue 1 maxvalue 9999999999999999999999 
increment by 10 start with 10 cache 20 noorder  nocycle ;

次のエラーが発生します。

java.sql.SQLException: ORA-00942: table or view does not exist

しかし、手動でテーブルに挿入しようとすると、成功します。

insert into ABC.test(LOG_ID,SESSION_ID,USER_ID) values 
    (VZPPTL.logid_seq.nextval,'test_session', '001');

どうしたの?

4

2 に答える 2

2

間違ったテーブルまたはデータベースを見ている可能性があります。コードから適切なデータベースを確認していますか?

于 2012-04-25T10:29:38.990 に答える
1

prepareステートメントでは、スキーマ名(この場合はABC)を指定する必要はありません。

これを試してください、それはうまくいくかもしれません。

String SQL_PREP_INSERT = "INSERT INTO TEST(LOG_ID、SESSION_ID、USER_ID)VALUES" + "(logid_seq.nextval、?、?)";

于 2012-04-25T10:26:19.267 に答える