正常的方式是这样的:

    pStmt = conn.prepareStatement("SELECT DETAILS FROM PROGRAM_HISTORY WHERE id = 12");
    rset = pStmt.executeQuery();
    Clob detailsClob= rset.getClob(1);
    Writer writer = adapter.getCharacterOutputStream(detailsClob);
    writer.write("add more details");

    pStmt = conn.prepareStatement("UPDATE PROGRAM_HISTORY SET DETAILS = ? WHERE ID = 12");
    pStmt.setClob(1, detailsClob);
    pStmt.execute();

这是有点复杂,是任何方式,我不需要先阅读然后更新它。就像更新varchar一样。

最佳答案

不知道你为什么称之为“正常”的方式,但下面的工作对我来说。
在更新数据之前,它不需要检索任何数据。

String value = "So long and thanks for all the fish";
StringReader reader = new StringReader(value);
pStmt = conn.prepareStatement("UPDATE PROGRAM_HISTORY SET DETAILS = ? WHERE ID = 12");
pStmt.setCharacterStream(1, reader, value.length());
pStmt.executeUpdate();

关于sql - 如何使用JDBC更新Oracle Clob,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8138918/

10-10 15:03