简体   繁体   English

IBM DB2,SQL和Java PreparedStatement。 如何:选择WHERE ROWID =

[英]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.

相关问题 如何在node.js中的IBM DB2 iSeries的sql select的where子句中使用固定长度的CCSID 37 char值 - How to use fixed length CCSID 37 char value in where clause of sql select for IBM DB2 iSeries in node.js 获取prepareStatement的可能的数据类型-Java DB2 - Get possible datatypes for preparedStatement - Java DB2 IBM DB2选择查询未执行 - IBM DB2 select query not getting executed 对SQL查询(DB2)使用PreparedStatement SQLCODE = -206 SQLSTATE = 42703 - Using a PreparedStatement for a SQL query (DB2) SQLCODE=-206 SQLSTATE=42703 在Java DB2 JDBC中:如何在WHERE子句中为SELECT语句使用null参数,其中值可以为null或不为null? - In Java DB2 JDBC: How can one use null parameters in a WHERE clause for a SELECT statement where the value can be either null or not null? 如何获得将在DB2中执行PreparedStatement的完整查询? - How to get the full query that a PreparedStatement is about to execute in DB2? PreparedStatement在Java中更快,db如何做到这一点? - PreparedStatement is faster in Java, How db do it? java.lang.ClassNotFoundException:com / ibm / db2 / jcc / DB2Driver-DB2 - java.lang.ClassNotFoundException: com/ibm/db2/jcc/DB2Driver - DB2 在 apache karaf 中部署 ibm db2 许可证文件的位置 - where to deploy ibm db2 license file in apache karaf 使用PreparedStatement插入。如何自动递增ID? - Insert using PreparedStatement. How do I auto-increment the ID?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM