- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道它可以通过使用 SQL 来实现
update activity set REFERENCE = EMPTY_CLOB() where id = ?
但我不能这样做,我不能在 SQL 中硬编码“EMPTY_CLOB()”。我使用的方式如下:
String empty_string = "";
conn = getConnection();
pStmt = conn.prepareStatement("SELECT REFERENCE FROM activity WHERE ID = ? FOR UPDATE");
pStmt.setLong(1, 1);
rset = pStmt.executeQuery();
Clob clob = null;
while (rset.next()) {
clob = rset.getClob(1);
Writer writer = adapter.getCharacterOutputStream(clob);
writer.write(empty_string);
writer.flush();
writer.close();
}
pStmt = conn.prepareStatement("update activity set REFERENCE = ? WHERE ID = ?");
pStmt.setClob(1, clob);
pStmt.setLong(2, 1);
pStmt.executeUpdate();
但是没有成功。 clob 没有更新为空字符串,它仍然存储为以前的值。
有人可以帮助我吗?
最佳答案
正如我在 your other question 中已经提到的那样:根据我的经验, 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),您可能还想尝试在 CLOB 列上使用 setString()
和 getString()
。
仅当您使用打算在跨越多个语句的事务期间保留的 LOB 定位器时,才需要对行进行锁定(至少这是我对手册链接引用的理解)。
关于java - 如何将空字符串更新到oracle Clob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8163827/
我正在尝试将作为 StrignBuffer 的 XML 响应保存到方法中。 我需要将此字符串数据作为 CLOB 保存到 Sql 并检索相同的数据。 响应最大3-4Kb,需要再次检索到StringBuf
我目前正在使用 oracle.sql.CLOB 绑定(bind)到 Oracle Clob。 使用有什么好处 java.sql.Clob clob = con.createClob(); 而不是使用创
我想更新一列是CLOB类型,方法如下; public boolean formVeriGuncelleSil(String sql) throws VeritabaniException {
我猜这是一个反复出现的问题,但还没有找到合适的解决方案。基本上,我试图通过 DB2 过程将有点大的 XML,即 32000 多个字符插入到 CLOB 列中。插入失败并显示以下错误看起来 DB2 正在将
我最近升级了一个应用程序以使用 JAVA 7 和 JBoss 7.1.1 运行该应用程序最初是在 JAVA 5 和 Jboss 4.2.2 上开发的。此应用程序使用 hibernate 3 进行持久化
一些背景:数据库是甲骨文。我正在尝试为表格的每一行创建一个分隔字符串。分隔字符串的某些值必须来自 CLOB(包含 XML)。 CLOB 在某些行上可能为空,这就是问题所在。 例如,我有一个表:'Ite
我有一个很大的 CLOB(超过 32kB),我想使用 StringBuilder 将其读取到字符串中。我如何以最有效的方式做到这一点?我不能为 StringBuilder 使用“int length”
我在 Oracle 11GR2 上使用最新版本的 DBUnit (2.4.7)。我正在使用 Java 6 (1.6.0_15) 和最新版本的 Oracle 客户端 jar (jdbc6.jar) 我一
关于这个主题有很多类似的问题,但我找不到任何解决方案,考虑到最终结果对于 varchar2 来说太大。 所以我想要做的是改变这一点: Column1 | Column2 -------- ------
我们正在尝试在 CLOB 字段中应用子字符串函数来修剪前 4000 个字符。我们收到以下错误消息。 下面是我们正在使用的查询: select cast(substr(field_name,1,4000
我有一个字符串“stringData”,我想将其转换为 Clob,你能帮我吗? 我已经尝试过: Clob clob = new SerialClob(stringData.toCharArray())
我对 CLOB 类型的数据对象不熟悉。我正在使用JAVA编程语言来编码。 我的问题是如何将音频文件转换为 CLOB? 我应该将文件转换为字符数组吗?或者还有其他办法吗? 谁能指导我完成此操作的教程吗?
我知道它可以通过使用 SQL 来实现 update activity set REFERENCE = EMPTY_CLOB() where id = ? 但我不能这样做,我不能在 SQL 中硬编码“E
我们正在尝试在 CLOB 字段中应用子字符串函数来修剪前 4000 个字符。我们收到以下错误消息。 下面是我们正在使用的查询: select cast(substr(field_name,1,4000
如何将 Clob 数据转换为 Binarystream ? 到目前为止,我可以通过 2 个步骤找到它,1--> CLOB 到字符串 2---> 字符串到 BinaryStream。 我正在调用一个具有
我有一个超过 5000 个字符的字符串,我想用 MyBatis 将其保存为 XMLTYPE。为此,我执行以下操作: 将字符串转换为 CLOB,CLOB 使用它通过构造函数将其保存在数据库中:XMLTY
当我尝试在 CLOB 列上使用 LAG 函数时遇到问题。 假设我们有一张 table create table test ( id number primary key, not_cl
我有一个具有以下 NLS 设置的数据库 NLS_NCHAR_CHARACTERSET - AL16UTF16 NLS_CHARACTERSET - AL32UTF8 有一个带有 clob 列的表,其
我在一个包含大量 XML 数据的表中有一个 CLOB 列。我需要为表格的一行更新此列的值。我该怎么做? 我试过谷歌搜索,但这种明显简单的东西在任何地方都无法以简单的语言提供。有人可以建议吗? 如果我使
我想知道 Oracle 的 CLOB 必须通过 BLOB 数据类型提供什么。 Both数据存储限制为 (4 GB - 1) * DB_BLOCK_SIZE。 长度超过 4000 字节的文本字符串不能放
我是一名优秀的程序员,十分优秀!