Oracle 无效的关系运算符

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

我使用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());
        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();
但是我得到一个异常j
ava.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”等保留字的列是一个坏主意。