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

107 篇文章 0 订阅

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;
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值