Oracle 无效的关系运算符
我使用prepare语句来执行update语句Oracle 无效的关系运算符,oracle,jdbc,Oracle,Jdbc,我使用prepare语句来执行update语句 PreparedStatement stmt = null; stmt = connection.prepareStatement("UPDATE " + table + " SET date = ?, id = ?, n = ? " + "WHERE (id_v = ?) AND (id_vid = ?)"); stmt.setDate(1, n.getDate());
PreparedStatement stmt = null;
stmt = connection.prepareStatement("UPDATE " + table + " SET date = ?, id = ?, n = ? " +
"WHERE (id_v = ?) AND (id_vid = ?)");
stmt.setDate(1, n.getDate());
stmt.setInt(2, n.getId());
stmt.setInt(3, n.getN());
stmt.setInt(4, n.getId_v());
stmt.setInt(5, n.getId_vid());
stmt.executeUpdate();
stmt.close();
但是我得到一个异常java.sql.SQLException:ORA-00920:无效的关系运算符
我的代码怎么了
p、 s table是我通过该方法传递的字符串参数
编辑
通过使用简单语句(但不是PrepareStatement)并通过连接将参数插入sql UPDATE,问题得到了解决。Power Designer已从物理数据模型图生成声明表的SQL脚本。它将表格字段创建为“date”、“id\u v”、“id”等,因此问题不在date字段中。对于第二个条件,可能应该是
和(id\u vid=?)
现在,它说的是
和(id-vid=?)
,这可能是一个打字错误。第二个条件可能应该是和(id-vid=?)
现在,上面写着
和(id vid=?)
,这可能是一个打字错误。你真的有一个名为“日期”的栏吗?如果是这样,那就不是一个好的做法。我能让它工作的唯一方法是:
SQL> CREATE TABLE tt (ID integer, "DATE" DATE);
Table created
SQL> insert into tt values (1, null);
1 row inserted
SQL> update tt set "DATE" = sysdate where id = 1;
1 row updated
SQL> select * from tt;
ID DATE
------ ---------
1 14-Apr-11
SQL>
你真的有一个名为“日期”的专栏吗?如果是这样,那就不是一个好的做法。我能让它工作的唯一方法是:
SQL> CREATE TABLE tt (ID integer, "DATE" DATE);
Table created
SQL> insert into tt values (1, null);
1 row inserted
SQL> update tt set "DATE" = sysdate where id = 1;
1 row updated
SQL> select * from tt;
ID DATE
------ ---------
1 14-Apr-11
SQL>
不,问题不在这里。我在post中键入此代码时出错。但是在代码中它没有这样的错误不,问题不在这样的地方。我在post中键入此代码时出错。但在代码中,它并没有这样的错误。如果您遵循此路径,请注意,在Oracle中,当您引用标识符时,它会区分大小写
My_Column
和My_Column
都指同一列,“My_Column”
和“My_Column”
不指。我不建议遵循此路径。区分大小写的标识符在很多级别上都很麻烦,而像“DATE”或“INTEGER”这样名为保留字的列是个坏主意。如果您遵循此路径,请注意,在Oracle中引用标识符时,它会区分大小写My_Column
和My_Column
都指同一列,“My_Column”
和“My_Column”
不指。我不建议遵循此路径。区分大小写的标识符在很多级别上都是一个难题,而名为“DATE”或“INTEGER”等保留字的列是一个坏主意。