免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2135 | 回复: 7
打印 上一主题 下一主题

嗨,请教将oracle里的clob的数据用jdbc读出成String [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-22 16:25 |只看该作者 |倒序浏览
谢谢啊!不尽感激

论坛徽章:
0
2 [报告]
发表于 2004-03-22 16:30 |只看该作者

嗨,请教将oracle里的clob的数据用jdbc读出成String

public void readBlob(String fileName)throws Exception
          {
                
                conn.setAutoCommit(false);
            Statement stmt = conn.createStatement();
            ResultSet rset = stmt.executeQuery("SELECT blobvalue FROM blobtable";
            BLOB blob = null;
            while (rset.next()) {
                blob = ((OracleResultSet) rset).getBLOB(1);
                System.out.println(blob.length());
            }

            FileOutputStream file_out = new FileOutputStream(new File(fileName));
            InputStream blob_in = blob.getBinaryStream();
            int temp;
            while((temp=blob_in.read())!=-1)
            file_out.write(temp);//读取数据、写入文件系统
           
            file_out.close();
            blob_in.close();
            conn.commit();
        }      

读出来保存到机器里了,转换成string?

论坛徽章:
0
3 [报告]
发表于 2004-03-22 17:04 |只看该作者

嗨,请教将oracle里的clob的数据用jdbc读出成String

我的想法如下:
ResultSet rs=stmt.executeQuery("select * from t_a_test1";

String content="";
if (rs.next()){

        try {
                //InputStream in = rs.getgetBlob(("ttt";
                //byte b[] = new byte[4096];
                //for(int i = in.read(b); i != -1 {
                        //in.read(b);
                        //content=content+b.toString();
                        // sout.write(b);
                         //in.read(b);
                //}
                Clob clob=rs.getClob("ttt";
                InputStream in =clob.getAsciiStream();
                int bufferSize=((oracle.sql.CLOB)clob).getBufferSize();
                OutputStream out1=((oracle.sql.CLOB)clob).getAsciiOutputStream();
                byte b[] = new byte[bufferSize];
                out.print(bufferSize);
                int count=in.read(b,0,bufferSize);
                int amount;
                while(count!=-1){
                        out1.write(b,0,count);
                        //amount+=count;
                        content=content+b.toString();
                        count=in.read(b,0,bufferSize);
                }

        }
        catch(Exception e){System.out.println(e);}
}
rs.close();
但是content=[B@e8647
我不想直接写入到文件,而是需要将读出的变成String

论坛徽章:
0
4 [报告]
发表于 2004-03-23 09:09 |只看该作者

嗨,请教将oracle里的clob的数据用jdbc读出成String

我找到了一个方法:
如下:
clob = rs.getClob("ttt";
long l=1;
String ttt=clob.getSubString(1,(int)clob.length());
好简单了,就是不知道通用不,而且对中文支持不错,象用
InputStream blob_in = clob.getAsciiStream();
对中文不能支持

论坛徽章:
0
5 [报告]
发表于 2004-03-23 11:00 |只看该作者

嗨,请教将oracle里的clob的数据用jdbc读出成String

还是用getStream,在readStream吧

论坛徽章:
0
6 [报告]
发表于 2004-03-23 17:46 |只看该作者

嗨,请教将oracle里的clob的数据用jdbc读出成String

我找不出这种方法的不好,因为当初设计的时候就是存html文本,而且这种方法很好处理,就是不知道如果很大很大会是怎样,会不会 flush 掉,还没有进行大数据量的测试

论坛徽章:
0
7 [报告]
发表于 2004-03-23 17:52 |只看该作者

嗨,请教将oracle里的clob的数据用jdbc读出成String

测试结果不好,谁能告诉我怎样处理流中的中文吗?
谢谢

论坛徽章:
0
8 [报告]
发表于 2004-03-24 11:24 |只看该作者

嗨,请教将oracle里的clob的数据用jdbc读出成String

所有问题已经解决,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP