if(rs.next()){
oracle.sql.CLOB clobtt = (oracle.sql.CLOB)rs.getClob(colName);
         
} 执行到这里就被debug了,类型转换不了,求高手指点一下

解决方案 »

  1.   

    插入BLOB的,樓主可借鑒一下. 17                 File f=new File(args[0]);
     18                         PreparedStatement pstmt = con.prepareStatement(
     19                         "Insert into BLOBTEST(NAME,VI,ID) VALUES(?,EMPTY_BLOB(),?)");
     20                         int num=Integer.parseInt(args[1]);
     21                         pstmt.setString(1,args[0]);
     22                         pstmt.setInt(2,num);
     23                         pstmt.execute();
     24                         pstmt.close();
     25                         Statement stmt = con.createStatement();
     26                         ResultSet rs = stmt.executeQuery("SELECT VI FROM BLOBTEST WHERE ID='"+num+"' FOR UPDAT
     27                         rs.next();
     28                         oracle.sql.BLOB BB=(oracle.sql.BLOB)rs.getBlob(1);
     29                         OutputStream blobOutputStream =BB.getBinaryOutputStream();
     30                         InputStream sampleFileStream = new FileInputStream(f);
     31                         byte[] buffer = new byte[10240];
     32                         int nread = 0;
     33                          while( (nread= sampleFileStream.read(buffer)) != -1 )
     34                          blobOutputStream.write(buffer, 0, nread); // Write to Blob
     35                           sampleFileStream.close();
     36                         blobOutputStream.close();
     37                                     con.commit();
      

  2.   

    假设col2是CLOB:
    写操作:String sql = "insert into tb_commendtemp (col1,col2) values('111',?)";
    string s = "长文本";
    StringBufferInputStream sbin = new StringBufferInputStream(s);
    PreparedStatement ps = query.getPreStmt(sql);
    ps.setAsciiStream(1,sbin,s.length());
    int i = ps.executeUpdate();
    ps.close();
    sbin.close();
    if(i>0) ok;
    如果是二进制文件就用FileInputStream写进去读的时候只要
    rs.getAsciiStream();
    rs.getUnicodeStream();
    rs.getBinaryStream();
    看它们的名字就知道是得到什么类型的的数据流了.如果存放的是二进制文件,比如图形,执行文件,压缩文件最好还是blob保险.
    写和读也要用二进制流,
    DataInputStrean和DatOutputStream.有时用UNICODE的字符流也能行,但
    不保险.如果是文本,用Clob和LONG都行.读和写用
    BuffreedReader和PrintWriter更方便.
    要想在一个网页上同时显示从程序中推出的文字和图象,这项技术目前在国内
    可以值100万.
    因为目前浏览器要想同时显示HTML文档和image文档,你到目前在国内还没有
    发现,要用到server push技术.你想想一下电子邮件的文档头,是复合型的,把
    数据用Base 64编码就可以通过特定的文档类型同时显示文字和图片了.可是浏览器目前还做不到.blob:二进制,如果exe,zip
    clob:单字节码,比如一般的文本文件.
    nlob:多字节码,如UTF格式的文件.如果带格式的文件如果WORD,EXECL等如果要保持格式不被破坏,最好以BLOB
    方式,它近似于以byte的原始方式存放,缺点当然是操作时效率低(慢).操作CLOB,别的可以看我上面的写和读的例子,只要注意把
    写pstmt.setBinaryStream()改成rs.setAsciiStream();
    读pstmt.getBinaryStream()改成rs.getBinaryStream();在从文件读成流的时候用Reader而不要用DataInuputStream