[英]IBM DB2, SQL and Java PreparedStatement. How to: SELECT WHERE ROWID=
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();
}
});
The above is not working, getting : 上面的方法不起作用,得到:
Exception in thread "main" java.lang.AbstractMethodError: 线程“主”中的异常java.lang.AbstractMethodError:
java/sql/PreparedStatement.setRowId(ILjava/sql/RowId;) java / sql / PreparedStatement.setRowId(ILjava / sql / RowId;)
I tried to use String: 我尝试使用String:
stmt.setString(2, "4fa78fb773723b13e90401255bdc0100000000001201");
Exception in thread "main" com.ibm.db2.jcc.b.SqlException: [ibm][db2][jcc][1083][10403] Unallowed convertion. 线程“主”中的异常com.ibm.db2.jcc.b.SqlException:[ibm] [db2] [jcc] [1083] [10403]不允许的转换。
I also tried to change the updateSQL: 我也尝试更改updateSQL:
String updateSQL = "... ROWID = ROWID(X?)";
and use setString ... no luck. 并使用setString ...不走运。 If you query the database without preparedstatement outside of java environment, the query would look like this:
如果您在Java环境之外查询没有preparedstatement的数据库,查询将如下所示:
UPDATE FILE_CLOB_VERSION SET WS_ACHIEVED = 'PUBLISHED' WHERE ROWID = ROWID(X'4fa78fb773723b13e90401255bdc0100000000001201')
How should my preparedstatement look like? 我的准备陈述应该是什么样子?
The ROWID column is of datatype ROWID: ROWID列的数据类型为ROWID:
COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME
ROWID 1111 ROWID ROWID 1111 ROWID
你有尝试过吗?
stmt.setBytes(2, "4fa78fb773723b13e90401255bdc0100000000001201".getBytes());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.