我坚持这个: 我已经按照互联网上的数百个程序将一个大字符串存储到clob对象中,然后存储到oracle db中。 特别是: 带有空clob的准备好的声明(插入):
executer.add("S_NOTA_GLOBALE", CLOB.getEmptyCLOB());
上面的行是填充查询中非常长的绑定变量。 所以,在这一点上,让我们说我插入了一个空的clob(实际上是真的)。然后:
String sqlText = "SELECT S_NOTA_GLOBALE " +
"FROM SN_DENUNCE " +
"WHERE ID_DENUNCIA = ? " +
"FOR UPDATE";
PreparedStatement psClobUpdate= conn.prepareStatement(sqlText);
psClobUpdate.setLong(1,denuncia.getId());
ResultSet rset = psClobUpdate.executeQuery();
rset.next();
CLOB notaGlobale = (CLOB) ((ResultSet) rset).getClob("S_NOTA_GLOBALE");
Writer writer = notaGlobale.setCharacterStream(0);
try {
writer.write(denuncia.getNotaGlobale().toCharArray());
writer.flush();
writer.close();
rset.close();
} catch (IOException e) {
e.printStackTrace();
}
另一个用于更新clob的preparedStatement。 问题是,一旦我检索到resultSet,它就是空的,这是合理的(?),因为我刚刚插入了一个空clob。我不知道自己到底在哪里,但我肯定会变得疯狂。
我实施的解决方案取自以下链接(尝试#5): http://fahdshariff.blogspot.it/2008/07/big-strings-and-oracle-clobs.html
注意: jdbc驱动程序11.2.0.4.0