我使用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”等等,因此问题不在日期字段中。
答案 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>