Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JDBC准备语句插入时出错_Java_Jdbc - Fatal编程技术网

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

Java 使用JDBC准备语句插入时出错,java,jdbc,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.

我尝试使用以下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');

有什么问题吗?

在prepare语句中,不需要给出模式名(在本例中为ABC)

试试这个,可能有用

String SQL\u PREP\u INSERT=“插入测试(日志ID、会话ID、用户ID)值”
+“(logid_seq.nextval,,?)”

在prepare语句中,不需要给出模式名(在本例中为ABC)

试试这个,可能有用

String SQL\u PREP\u INSERT=“插入测试(日志ID、会话ID、用户ID)值”

+“(logid_seq.nextval,,?)”

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

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

抱歉。。如何接受答案?谢谢。。我接受了前面的问题对不起。。如何接受答案?谢谢。。我接受了前面的问题..嗯,好的,我将尝试不使用模式名称。但在此之前,我可以使用schema.table\u名称插入。但在这种情况下,我没有序列。字符串SQL_PREP_INSERT=“INSERT INTO ABC.TEST(SESSION_ID,USER_ID)值“+”(?,?)”;我刚刚添加了一个新的列log_id.并使用sequence插入。添加它之后,它抛出了这个错误。嗯,好的,我将尝试不使用模式名。但在此之前,我可以使用schema.table\u名称插入。但在这种情况下,我没有序列。字符串SQL_PREP_INSERT=“INSERT INTO ABC.TEST(SESSION_ID,USER_ID)值“+”(?,?)”;我刚刚添加了一个新的列log_id.并使用sequence插入。在添加它之后,它抛出了那个错误。是的,它正确的数据库和正确的表,因为我能够在将序列添加到insert语句之前插入。我刚刚删除了该表,并通过添加新列日志id重新创建了该表。现在出现此错误。您是否尝试在数据库上运行由
preparedstatement
生成的查询?否。我现在无法生成preparedstatement查询,因为代码位于不同的框中,我需要删除代码更改。但在本地机器中,我无法尝试,因为它有pointbase而不是Oracle DB。我在尝试使用pointbase java.sql.SQLException时得到了以下信息:在211位置的表中找不到列“NEXTVAL”。我现在可以使用它了。问题是序列的特权问题。必须向应用程序访问的角色授予“选择”权限。谢谢。是的,它正确的数据库和正确的表,因为我能够在向insert语句添加序列之前插入。我刚刚删除了该表,并通过添加新列日志id重新创建了该表。现在出现此错误。您是否尝试在数据库上运行由
preparedstatement
生成的查询?否。我现在无法生成preparedstatement查询,因为代码位于不同的框中,我需要删除代码更改。但在本地机器中,我无法尝试,因为它有pointbase而不是Oracle DB。我在尝试使用pointbase java.sql.SQLException时得到了以下信息:在211位置的表中找不到列“NEXTVAL”。我现在可以使用它了。问题是序列的特权问题。必须向应用程序访问的角色授予“选择”权限。谢谢