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;)
Я пытался использовать строку:
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