java 读取Oracle的clob,blob转换为字符串

来源:互联网 发布:重庆黑马程序员地址 编辑:程序博客网 时间:2024/05/16 12:25

java 读取clob,blob转换为字符串

/***
  * 读取oracleCLOB字段内容
  * @param conn
  * @return
  */
 public static String readCLOB(Connection conn) {
  String sql = "select 大字段1,大字段2 from 印章基本信息_char_ccbb where yzbm='2'";
  String content = "";
  try {
   conn.setAutoCommit(false);
   PreparedStatement ps1 = conn.prepareStatement(sql);
   ResultSet rs1 = ps1.executeQuery();
   while (rs1.next()) {
    oracle.sql.CLOB clob = (oracle.sql.CLOB) rs1.getClob("大字段1");

    BufferedReader in = new BufferedReader(clob
      .getCharacterStream());
    StringWriter out = new StringWriter();
    int c;
    while ((c = in.read()) != -1) {
     out.write(c);
    }
    content = out.toString();
    System.out.println(content);// 输出CLOB内容
   }
  } catch (Exception e) {
   e.printStackTrace();
  }

  return content;
 }

 

/***
  * 读取oracle的blob转换为字符串
  * @param conn
  * @return
  */

 public static String ConvertBLOBtoString(Connection conn){
  String newStr = ""; // 返回字符串
  long BlobLength; // BLOB字段长度
  byte[] bytes; // BLOB临时存储字节数组
  int i = 1; // 循环变量
  Statement st =null;
  try {
   st = conn.createStatement();
   ResultSet rs = st
     .executeQuery("select 大字段2 from 印章基本信息_char_ccbb where yzbm='2'");
   while (rs.next()) {
    BLOB blob = (BLOB) rs.getBlob("大字段2");
    byte[] msgContent = blob.getBytes(); // BLOB转换为字节数组
    BlobLength=blob.length();  //获取BLOB长度  
    if (msgContent == null || BlobLength==0)  //如果为空,返回空值  
        {  
          return "";  
        }else{  
     while(i<BlobLength)             //循环处理字符串转换,每次1024;Oracle字符串限制最大4k 
           { 
             bytes= blob.getBytes(i,1024) ; 
             i=i+1024; 
             newStr = newStr+new String(bytes,"gb2312") ;          
           } 
        }
   }
   System.out.println(newStr);
   System.out.println(newStr.length());
   
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } finally{
   if(st!=null){
    try {
     st.close();
    } catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
   try {
    conn.close();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  return newStr;
 }

0 0