读取clob时报错,求救

yangqing1976 2004-09-01 06:42:00
我用下面的方法读取clob时报错,

sql = "select big from web_test where id=1";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if(rs.next()){
Reader clob=((oracle.sql.CLOB)rs.getClob(1)).getCharacterStream();
//
BufferedReader in = new BufferedReader(clob);
StringBuffer sb = new StringBuffer();
String read = in.readLine();
while (!read.equals("")){
sb.append(read);
read=in.readLine();
}
in.close();

System.out.println(sb.toString());


java.io.IOException: 类型长度大于最大值

at oracle.jdbc.dbaccess.DBError.SQLToIOException(DBError.java:716)

at oracle.jdbc.driver.OracleClobReader.needChars(OracleClobReader.java:222)

at oracle.jdbc.driver.OracleClobReader.read(OracleClobReader.java:163)

at java.io.BufferedReader.fill(BufferedReader.java:136)

at java.io.BufferedReader.readLine(BufferedReader.java:299)

at java.io.BufferedReader.readLine(BufferedReader.java:362)

at miscellaneous.ClobTest.readClob(ClobTest.java:64)

at miscellaneous.ClobTest.main(ClobTest.java:87)

我搜索了一下论坛,已经有不少帖子问过类似的问题但都没有答案,现在我也遇到了,请高人解决以下。谢谢。
...全文
203 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangqing1976 2004-09-04
  • 打赏
  • 举报
回复 1
你说的是oci驱动吧,那个是可以,我试过了,但要配tns,麻烦啊。可我看csdn以前的帖子,有很多也是我这样写的,他们为什么可以呢?
louisqiang 2004-09-04
  • 打赏
  • 举报
回复
这是oracle的驱动的问题,
用3类驱动(必须安装客户端)没有问题,用XA驱动也没有问题。
用thin就是有问题。
yangqing1976 2004-09-03
  • 打赏
  • 举报
回复
又进了一步,我用

java.sql.Clob clob=rs.getClob(1);
System.out.println(clob.length());

已经能够正确打出clob里面字符串的长度了,但是接下来

Reader reader=clob.getCharacterStream();
System.out.println(reader.read());

马上报上面的错误,高手指点一下啊。
yangqing1976 2004-09-02
  • 打赏
  • 举报
回复
试过了,还是报这个错啊。
bobshi 2004-09-02
  • 打赏
  • 举报
回复
试试这样读 

oracle.sql.CLOB clobContent = null;
clobContent = (oracle.sql.CLOB)rs.getClob("content");
String newcontent="";
if(clobContent!=null){
Reader is=clobContent.getCharacterStream();
BufferedReader br=new BufferedReader(is);
String s=br.readLine();
while(s!=null){
newcontent+=s;
s=br.readLine();
}
}
yangqing1976 2004-09-02
  • 打赏
  • 举报
回复
我刚看过 oracle9i 带的例子,我和他的一模一样,除了它是用的oci而我要用thin,
当我向数据库中插入时,不管是用 setCharacterStream 还是 setBinaryStream 都能成功,就是读数据时,不管是用 getCharacterStream 还是 getBinaryStream 都报上面的错,不解,求教高人。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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