CLOB 问题,在线急等!

sundust 2004-10-31 08:37:28
boolean bAutoCommit = conn.getAutoCommit();
conn.setAutoCommit(false);

strSQL = "SELECT content FROM news WHERE id="+ id + " FOR UPDATE";
myRS = stmt.executeQuery(strSQL);

if(myRS.next())
{
Clob myClob = myRS.getClob(1);
//下一行报错:java.lang.ClassCastException
((oracle.sql.CLOB)myClob).putString(((oracle.sql.CLOB)myClob).length()+1, strContent);
}

myRS.close();
myRS = null;
conn.setAutoCommit(bAutoCommit);

报错信息:java.lang.ClassCastException

在WINDOWS2000+RESIN+连接池是正确的,但是在REDHAT LINUX+TOMCAT4+连接池就报错。
我读写CLOB是参考ORACLE上的资料写的,地址如下:

http://www.oracle.com/technology/sample_code/tech/java/sqlj_jdbc/files/advanced/LOBSample/LOBSample.java.html
...全文
150 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sundust 2004-10-31
在线等啊。
回复
sundust 2004-10-31
新发现:我把连接池取消后,用普通的连接后:

String strUser, strPassword;
String strDrive, strUrl;
strUser = "test";
strPassword = "testtest";
strDrive = "oracle.jdbc.driver.OracleDriver";
strUrl = "jdbc:oracle:thin:@localhost:1521:oasis";
if (conn!=null) return;
Class.forName(strDrive).newInstance();
conn = DriverManager.getConnection(strUrl, strUser, strPassword);

工作正常!
回复
sundust 2004-10-31
取值没有问题。现在的问题在存入上面。

myRS 我试了,定义成oracle也不行哈
回复
zez 2004-10-31
不用clob,直接取String即可。。。
另外你的myRS 你确定是oracle的吗???
回复
sundust 2004-10-31
Clob myClob = myRS.getClob(5);
strContent = myClob.getSubString((long)1, (int)myClob.length());

以下代码都是对的,也就是说能读取。错误原因在转换时发生错误,有资料说是因为驱动程序不对,但是我不知道如何解决。
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告