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()时,出现错误
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,两者都有相同的错误
发布于 2014-06-19 16:52:55
不能将字符串写入Clob列。
而不是
statement.setString(2, inXml); 使用
statement.setClob(2, xmlClob);您首先需要创建xmlClob:
Clob xmlClob = connection.createClob();
Writer clobWriter = myClob.setCharacterStream(1);
clobWriter.write(inXml); 发布于 2014-06-19 16:42:46
对于clob字段,您可以使用.setClob(..)
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
发布于 2014-06-19 16:46:39
Java (底层驱动程序)将CLOB视为字符流。当您设置String时,底层驱动程序实现将自动执行相关的转换(String到Varchar等)。由于CLOB是一种特殊类型,程序员有责任执行必要的步骤。请访问现在如何使用java插入clob的链接:http://docs.oracle.com/javase/tutorial/jdbc/basics/blob.html
https://stackoverflow.com/questions/24302165
复制相似问题