IBM DB2、SQL和Java PreparedStatement。如何:选择ROWID所在的位置=
上述操作不起作用,正在获取: 线程主java.lang.AbstractMethodError中出现异常: java/sql/PreparedStatement.setRowIdILjava/sql/RowId 我尝试使用字符串:IBM DB2、SQL和Java PreparedStatement。如何:选择ROWID所在的位置=,java,sql,jdbc,db2,Java,Sql,Jdbc,Db2,上述操作不起作用,正在获取: 线程主java.lang.AbstractMethodError中出现异常: java/sql/PreparedStatement.setRowIdILjava/sql/RowId 我尝试使用字符串: String updateSQL = "UPDATE FILE_CLOB_VERSION SET WS_ACHIEVED = ? WHERE ROWID = ?"; PreparedStatement stmt = con.prepareStateme
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 com.ibm.db2.jcc.b.SqlException中的异常:[ibm][db2][jcc][1083][10403]不允许的转换
我还尝试更改updateSQL:
stmt.setString(2, "4fa78fb773723b13e90401255bdc0100000000001201");
并使用setString。。。不走运。如果在java环境之外不使用preparedstatement查询数据库,则查询如下所示:
String updateSQL = "... ROWID = ROWID(X?)";
我准备好的声明应该是什么样子
ROWID列的数据类型为ROWID:
列名称数据类型类型名称
ROWID 1111 ROWID你试过这个吗
UPDATE FILE_CLOB_VERSION SET WS_ACHIEVED = 'PUBLISHED' WHERE ROWID = ROWID(X'4fa78fb773723b13e90401255bdc0100000000001201')
这有用吗?也许你应该使用字符串updateSQL=。。。ROWID=ROWIDX'?';之前已经看到了,但是没有,没有帮助:没有,我相信我已经尝试过了,而且您通常不会在准备好的语句中引用字符串,SQLERRMC:09了解代码及其含义在哪个平台上运行代码以及默认编码是什么?如果它是一些深奥的东西或类似的东西,或者数据库希望字节采用非ASCII兼容编码,则可以尝试显式指定它,例如getBytesASCII或getBytesCp1047
stmt.setBytes(2, "4fa78fb773723b13e90401255bdc0100000000001201".getBytes());