zoukankan      html  css  js  c++  java
  • java读取blob,clob转换为字符串

    直接上代码:

    package com.it.test;
    
    import java.io.BufferedReader;
    import java.io.StringWriter;
    import java.io.UnsupportedEncodingException;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import oracle.sql.BLOB;
    
    public class Test {
    
        /***
         * 读取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) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                if (st != null) {
                    try {
                        st.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return newStr;
        }
    }

    以上内容参考自:https://blog.csdn.net/u010965170/article/details/78729794

  • 相关阅读:
    IEnumerable和IQueryable的区别
    最全的ASP.NET MVC路由配置,以后RouteConfig再弄不懂去吃翔
    JSON遍历方法
    将Sublime Text 2搭建成一个好用的IDE
    Linux入门教程
    apache如何配置默认的根目录
    Web移动端Fixed布局的解决方案
    node-创建模块
    关于文字内容溢出用点点点(…)省略号表示
    JavaScript设计模式与开发实践 | this、call和apply
  • 原文地址:https://www.cnblogs.com/licheng0201/p/9974830.html
Copyright © 2011-2022 走看看