正如我在另一个问题中已经提到的:以我的经验,getClob()和setClob()无法正常工作。
使用setCharacterStream()
来代替:
StringReader clob = new StringReader("");
pStmt = conn.prepareStatement("update activity set REFERENCE = ? WHERE ID = ?");
pStmt.setCharacterStream(1, clob, 0);
pStmt.setLong(2, 1);
pStmt.executeUpdate();
这样,您还可以在更新之前删除不必要的SELECT,这也将提高性能。
另一种选择是将该列设置为 NULL
对于较新的驱动程序(11.x),您可能还想尝试使用setString()
和getString()
在CLOB列上。
仅当在跨多个语句的事务中使用打算保留的LOB定位器时,才需要锁定行(至少这是我对手册的链接参考的理解)。