第一次操作oracle的clob类型就栽跟头了。当时参考的是 http://www.iteye.com/topic/100066 这篇文章。
tomcat启动后,出库操作没什么问题,用 java.sql.Clob 就行,不需要强制转换为 oracle.sql.CLOB。
入库操作时,原文章给出的方法如下(部分代码):
//插入一个空对象empty_clob()
st.executeUpdate("insert into TESTCLOB (ID, NAME, CLOBATTR) values (1, "thename", empty_clob())");
//锁定数据行进行更新,注意“for update”语句
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Clob对象后强制转换为oracle.sql.CLOB
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("CLOBATTR");
Writer outStream = clob.getCharacterOutputStream();
//data是传入的字符串,定义:String data
char[] c = data.toCharArray();
outStream.write(c, 0, c.length);
}
在本机上运行正常,部署到服务器后报 java
.lang.ClassCastException 错误,提示 oracle.sql.CLOB 不能强制转换为 oracle.sql.CLOB 类型。我靠,这不是胡说呢嘛!!!研究了下本地和服务器的区别,发现服务器的tomcat的lib下面也有个ojdbc14.jar,跟工程里的一样,而本地的tomcat没有这个包,看来问题就在这里了(当然这是研究了四个多小时后才发现的)。
最后的解决办法是:删掉服务器上工程里的ojdbc14.jar这个包,同时将上面那段代码中的
// 得到java.sql.Clob对象后强制转换为oracle.sql.CLOB
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("CLOBATTR");
/**
* 改为:
*/
import oracle.sql.CLOB;
// 得到Clob对象后强制转换为CLOB
CLOB clob = CLOB rs.getClob("CLOBATTR");
至于为什么直接写 oracle.sql.CLOB 不行,暂时还没研究,这两天忙死了。记录下来,等项目上线后再研究。
分享到:
相关推荐
Oracle导出Clob,Blob等大字段工具,自己写的工具,方便大家下载使用
Oracle导出Clob,Blob工具 ,支持导出CLob工具版本2,解决上个版本导出时间有问题的bug
简单写的一个小工具,把图片存入oracle中,按clob和blob两种方式存储,并读取图片
CLOB、BLOB___CLOB与BLOB的区别
Oracle,Clob,Blob数据操作例子
oracle中使用jdbc读写clob字段,很多细节介绍,内容全面。
完整通过JAVA读写ORACLE中CLOB、BLOB字段的方法,提供数据库连接池的方法
oracle中的Blob和Clob区别,希望对大家学习有帮助呵
NULL 博文链接:https://shihuan830619.iteye.com/blog/1662937
oracle对大对象类型操作:blob,clob,nclob,bfile
clob和blob在jdbc的应用~~~~~~
Mybatis 处理 CLOB、BLOB 类型数据
java操作oracle clob,基础教程,教你clob在java中的用法,简单易学。
ORACLE中CLOB字段转String类型
DELPHI的CLOB和BLOB存取处理
java中(注解符)处理Clob(blob)类型
java操作oracle clob,基础教程,教你clob在java中的用法,简单易学。
oracle Blob转换Clob
很多朋友在操作oracle数据库的clob,blob字段时不知道怎么插入和使用,这里提供读写范例。
JDBC读写Oracle的CLOB字段