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
...全文
181 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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());

以下代码都是对的,也就是说能读取。错误原因在转换时发生错误,有资料说是因为驱动程序不对,但是我不知道如何解决。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧