关系运算符无效

时间:2011-04-14 21:12:17

标签: oracle jdbc

我使用prepare语句来执行更新语句。

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: invalid relational operator

我的代码出了什么问题?

p.s table是我通过方法

的字符串参数

修改 通过使用简单的Statement(但不是PrepareStatement)并通过串联将参数插入到sql UPDATE来解决问题。声明表的SQL脚本是由Power Designer从物理数据模型图生成的。它创建表字段为“date”,“id_v”,“id”等等,因此问题不在日期字段中。

2 个答案:

答案 0 :(得分:2)

第二个条件可能应该是AND (id_vid = ?)吗?

现在,它说AND (id vid = ?)这可能是一个错字。

答案 1 :(得分:2)

你真的有一个名为“日期”的专栏吗?如果是这样,那不是一个好习惯。我能让它发挥作用的唯一方法就是:

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>