我从oracle中读出blob类型的数据,但是不知道怎么转化成string请大家帮忙看看,谢谢!

解决方案 »

  1.   

              ResultSet rs = pstmt.executeQuery();
              try {
                if (rs.next()) {
                  Blob blob = rs.getBlob("content");
                  InputStream is = new BufferedInputStream(blob.getBinaryStream());
                  try {
                    File tempFile = File.createTempFile(docId, "", new File(
                        ServerManager.tempDir));
                    FileOutputStream fos = new FileOutputStream(tempFile);
                    try {
                      byte[] b = new byte[1024];
                      while (true) {
                        int i = is.read(b, 0, 1024);
                        if (i == -1) {
                          result = tempFile;
                          break;
                        }
                        fos.write(b, 0, i);
                      }
                    } finally {
                      fos.close();
                    }
                  } finally {
                    is.close();
                  }
                }
              } finally {
                rs.close();
              }
      

  2.   

    为什么把BLOB变成String?一般CLOB变成String还有意义Connection conn = null;
    Statement st = null;
    ResultSet rs = null;
    try {
        //...获取conn
        st = conn.createStatement();
        rs = st.executeQuery("select big_bit from blob_test");
         while (rs.next()) 
            Blob blob = rs.getBlob(1);
            InputStream in = blob.getBinaryStream();
            //一般接下来是把in的字节流写入一个文件中,但是你要放进字符串我也就不写那么麻烦的了     String s="";
            byte[] buff=new byte[1024];
    for(int i=0;(i=in.read(buff))>0;){
        s=s+new String(buff);
    }
    in.close();
        }
    }
      

  3.   

    BLOB可能很大哟(容量最大4G),转换能成功吗
      

  4.   

    BLoB数据转换成String干嘛呀,一堆乱码。他是 byte[] ,存放的可能是图片,声音,视频呀,转换成String没意义吧。3 楼的代码是读取BLOB的,然后用OutputStream 输出成你需要的类型格式