首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clob列java.sql.SQLException: ORA-01461:只能为insert绑定LONG值到LONG列

Clob列java.sql.SQLException: ORA-01461:只能为insert绑定LONG值到LONG列
EN

Stack Overflow用户
提问于 2014-06-19 16:34:19
回答 3查看 4.6K关注 0票数 0
代码语言:javascript
复制
insertSQL = "insert into TELBP_INPUT_LOG (SERIAL_NO, INPUT_XML) values (?, ?)";
statement = connection.prepareStatement(insertSQL);
statement.setString(1, serialNo);
statement.setString(2, inXml);          
//statement.setString(2, "test");
insertCount = statement.executeUpdate();

当程序运行到executeUpdate()时,出现错误

代码语言:javascript
复制
java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column  

被抛出,但是如果我复制serialNO和inXml的值并在SQL developer中运行,没有提示错误,原因是什么?

oracle版本:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

列:

SERIAL_NO VARCHAR2(22岁)

INPUT_XML负载均衡

Websphere:Websphere 5.1

jdbc:同时尝试了ojdbc14和ojdbc6,两者都有相同的错误

EN

回答 3

Stack Overflow用户

发布于 2014-06-19 16:52:55

不能将字符串写入Clob列。

而不是

代码语言:javascript
复制
statement.setString(2, inXml); 

使用

代码语言:javascript
复制
statement.setClob(2, xmlClob);

您首先需要创建xmlClob:

代码语言:javascript
复制
Clob xmlClob = connection.createClob();
Writer clobWriter = myClob.setCharacterStream(1);
clobWriter.write(inXml); 
票数 2
EN

Stack Overflow用户

发布于 2014-06-19 16:42:46

对于clob字段,您可以使用.setClob(..)

代码语言:javascript
复制
setString():Sets the designated parameter to the given Java String value. The driver converts this to an SQL VARCHAR or LONGVARCHAR value (depending on the argument's size relative to the driver's limits on VARCHAR values) when it sends it to the database.

API DOC

CLOB API DOC

票数 1
EN

Stack Overflow用户

发布于 2014-06-19 16:46:39

Java (底层驱动程序)将CLOB视为字符流。当您设置String时,底层驱动程序实现将自动执行相关的转换(String到Varchar等)。由于CLOB是一种特殊类型,程序员有责任执行必要的步骤。请访问现在如何使用java插入clob的链接:http://docs.oracle.com/javase/tutorial/jdbc/basics/blob.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24302165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档