使用JDBC预准备语句插入时出错

时间:2012-04-25 09:36:52

标签: java jdbc

我正在尝试使用以下JDBC语句从Java向Oracle DB中插入一些值:

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');

有什么问题?

2 个答案:

答案 0 :(得分:2)

可能查看错误的表或数据库。您确定从代码中查找正确的数据库吗?

答案 1 :(得分:1)

在准备语句中,无需提供模式名称(在本例中为ABC)。

试试这个,它可能有用。

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