String updateSQL = "UPDATE FILE_CLOB_VERSION SET WS_ACHIEVED = ? WHERE ROWID = ?";
PreparedStatement stmt = con.prepareStatement(updateSQL);
...
stmt.setString(1, "PUBLISHED");
stmt.setRowId(2,new RowId() {
@Override
public byte[] getBytes() {
return "4fa78fb773723b13e90401255bdc0100000000001201".getBytes();
}
});
以上不起作用,获得:
线程“main”中的异常java.lang.AbstractMethodError:
的java / SQL / PreparedStatement.setRowId(ILjava / SQL / RowId的)
我尝试使用String:
stmt.setString(2, "4fa78fb773723b13e90401255bdc0100000000001201");
线程“main”中的异常com.ibm.db2.jcc.b.SqlException:[ibm] [db2] [jcc] [1083] [10403]不允许转换。
我也尝试更改updateSQL:
String updateSQL = "... ROWID = ROWID(X?)";
并使用setString ......没有运气。如果在java环境之外没有预先声明的情况下查询数据库,则查询将如下所示:
UPDATE FILE_CLOB_VERSION SET WS_ACHIEVED = 'PUBLISHED' WHERE ROWID = ROWID(X'4fa78fb773723b13e90401255bdc0100000000001201')
我的预备陈述应该如何?
ROWID列的数据类型为ROWID:
COLUMN_NAME DATA_TYPE TYPE_NAME
ROWID 1111 ROWID
答案 0 :(得分:0)
你试过这个吗?
stmt.setBytes(2, "4fa78fb773723b13e90401255bdc0100000000001201".getBytes());