`
magic_agate
  • 浏览: 105798 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

处理blob和clob的通用类

阅读更多
public class LobUtil {
    private static final int BUFFER_SIZE = 4096;
    private LobUtil() {
    }
    public static synchronized void writeBLOB(ResultSet rs, String fieldName,
            byte[] buf) throws SQLException, IOException {
        if (buf == null) {
            return;
        }
        OutputStream os = null;
        Blob b = rs.getBlob(fieldName);
        if (b == null) {
            throw new SQLException("刚刚插入或更新的BLOB指针为空!");
        } else {
            // if (Conn.isUseConnectionPool()){
            // os =
            // ((weblogic.jdbc.vendor.oracle.OracleThinBlob)b).getBinaryOutputStream();
            // }
            // else{
            // os = ((oracle.sql.BLOB)b).getBinaryOutputStream();
            // }
            /**
             * @todo 需要最终改造为通用数据库处理接口
             */
            // <modify author="jdyao" time="2005-07-26">
            try {
                Method methodToInvoke = b.getClass().getMethod(
                        "getBinaryOutputStream", (Class[]) null);
                os = (OutputStream) methodToInvoke.invoke(b, (Object[]) null);
            } catch (Exception e) {
                throw new SQLException(e.getMessage());
            }
            // os = ( (oracle.sql.BLOB) b).getBinaryOutputStream();
            // </modify>
            BufferedOutputStream bos = new BufferedOutputStream(os);
            bos.write(buf);
            bos.flush();
            bos.close();
        }
    }
    public static synchronized void writeBLOB(ResultSet rs, String fieldName,
            InputStream in) throws SQLException, IOException {
        if (in == null) {
            return;
        }
        OutputStream os = null;
        Blob b = rs.getBlob(fieldName);
        if (b == null) {
            throw new SQLException("刚刚插入或更新的BLOB指针为空!");
        } else {
            // if (Conn.isUseConnectionPool()){
            // os =
            // ((weblogic.jdbc.vendor.oracle.OracleThinBlob)b).getBinaryOutputStream();
            // }
            // else{
            // os = ((oracle.sql.BLOB)b).getBinaryOutputStream();
            // }
            // <modify author="jdyao" time="2005-07-26">
            try {
                Method methodToInvoke = b.getClass().getMethod(
                        "getBinaryOutputStream", (Class[]) null);
                os = (OutputStream) methodToInvoke.invoke(b, (Object[]) null);
            } catch (Exception e) {
                throw new SQLException(e.getMessage());
            }
            // os = ( (oracle.sql.BLOB) b).getBinaryOutputStream();
            // </modify>
            BufferedOutputStream bos = new BufferedOutputStream(os);
            BufferedInputStream bis = new BufferedInputStream(in);
            byte buf[] = new byte[BUFFER_SIZE];
            int len = -1;
            while ((len = bis.read(buf)) != -1) {
                bos.write(buf, 0, len);
            }
            bis.close();
            bos.flush();
            bos.close();
        }
    }
    public static synchronized void writeCLOB(ResultSet rs, String fieldName,
            String buf) throws SQLException, IOException {
        if (buf == null) {
            return;
        }
        Writer wr = null;
        Clob c = rs.getClob(fieldName);
        if (c == null) {
            throw new SQLException("刚刚插入或更新的CLOB指针为空!");
        } else {
            // <modify author="jdyao" time="2005-07-26">
            try {
                Method methodToInvoke = c.getClass().getMethod(
                        "getCharacterOutputStream", (Class[]) null);
                wr = (Writer) methodToInvoke.invoke(c, (Object[]) null);
            } catch (Exception e) {
                throw new SQLException(e.getMessage());
            }
            // wr = ((oracle.sql.CLOB) c).getCharacterOutputStream();
            // </modify>
            BufferedWriter bw = new BufferedWriter(wr);
            bw.write(buf);
            bw.flush();
            bw.close();
        }
    }
    public static synchronized void writeCLOB(ResultSet rs, String fieldName,
            InputStream in) throws SQLException, IOException {
        if (in == null) {
            return;
        }
        Writer wr = null;
        Clob c = rs.getClob(fieldName);
        if (c == null) {
            throw new SQLException("刚刚插入或更新的CLOB指针为空!");
        } else {
            //<modify author="jdyao" time="2005-07-26">
            try {
              Method methodToInvoke = c.getClass().getMethod(
                  "getCharacterOutputStream", (Class[]) null);
              wr = (Writer) methodToInvoke.invoke(c, (Object[]) null);
            } catch (Exception e) {
              throw new SQLException(e.getMessage());
            }
            //wr = ((oracle.sql.CLOB) c).getCharacterOutputStream();
            //</modify>
            
            BufferedWriter bw = new BufferedWriter(wr);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            char buf[] = new char[BUFFER_SIZE];
            int len = -1;
            while ( (len = br.read(buf)) != -1) {
              bw.write(buf, 0, len);
            }
            br.close();
            bw.flush();
            bw.close();
        }
    }
}
分享到:
评论

相关推荐

    如何将DB2数据库中的大对象(BLOB,CLOB)数据类型复制到Oracle数据库中

    在不同数据库系统中,对LOB的支持和处理方式可能有所不同。 2. **DB2与Oracle对LOB的支持**: IBM DB2数据库对LOB对象提供了良好的支持,而WII(Websphere Information Integrator)的复制功能在非DB2数据库中对...

    关于C#更新智能大对象更新时的问题及解决方法.doc

    具体来说,可以使用`GbsConnection`类的`GetGbsBlob()`和`GetGbsClob()`方法来获取Blob和Clob对象。这两个方法允许你创建一个适配于GBase数据库的Blob或Clob实例,然后将其作为参数传递给SQL命令,这样就能正确地...

    oracle blob 字段 读写 delphi

    在Delphi编程环境中,处理这类数据时需要掌握特定的API调用和方法。本篇文章将深入探讨如何在Delphi中对Oracle数据库的BLOB字段进行读写操作。 首先,你需要在Delphi项目中引入Oracle数据库访问的相关组件,如...

    DBeaver (dbeaver-ce-21.3.2-win32.win32.x86_64.zip)

    DBeaver (dbeaver-ce-21.3.2-win32.win32.x86_64.zip)适用于Windows 64 位 (zip)。...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。

    DBeaver (dbeaver-ce-21.2.5-macos-aarch64.dmg)

    DBeaver (dbeaver-ce-21.2.5-macos-aarch64.dmg)适用于Mac OS X M1 (dmg) – beta。...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。

    DBeaver (dbeaver-ce-21.2.5-stable.x86_64.rpm)

    DBeaver (dbeaver-ce-21.2.5-stable.x86_64.rpm)适用于Linux RPM 包 64 位(安装程序)...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。

    DBeaver (dbeaver-ce-21.2.5-win32.win32.x86_64.zip

    DBeaver (dbeaver-ce-21.2.5-win32.win32.x86_64.zip)适用于Windows 64 位 (zip)。...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。

    DBeaver (dbeaver-ce-21.2.5-linux.gtk.x86_64.tar.gz)

    DBeaver (dbeaver-ce-21.2.5-linux.gtk.x86_64.tar.gz)适用于Linux 64 位 (zip)。...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。

    dbeaver-ce-21.1.0版本安装包

    dbeaver是免费和开源(ASL)为开发人员和数据库管理员通用数据库工具。...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。

    DBeaver (dbeaver-ce-21.2.5-linux.gtk.aarch64-nojdk.tar.gz)

    DBeaver (dbeaver-ce-21.2.5-linux.gtk.aarch64-nojdk.tar.gz)适用于Linux ARM 64 位...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。

    DBeaver (dbeaver-ce-21.2.5-linux.gtk.x86_64-nojdk.tar.gz)

    DBeaver (dbeaver-ce-21.2.5-linux.gtk.x86_64-nojdk.tar.gz)适用于Linux x86 64 位...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。

    dbeaver中文版 v3.7.7官方最新版64_96946.rar

    beaver是一款非常给力的通用数据库管理工具和SQL客户端,...今日为用户提供的是dbeaver中文版,软件提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等.

    DBeaver22很好用

    DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。 支持的数据库编辑 播报 DBeaver经官方测试,其支持:MySQL、Oracle、PostgreSQL、IBM ...

    dbeaver-ee-21.2.0-win32.win32.x86_agent_64.zip

    DBeaver Enterprise提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。DBeaver Enterprise经官方测试,其支持:MySQL、Oracle、PostgreSQL、IBM ...

    DBeaver Enterprise 21.1企业版 (DBEE21.1+JDK11+Agent)

    DBeaver Enterprise提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。DBeaver Enterprise经官方测试,其支持:MySQL、Oracle、PostgreSQL、IBM ...

    dbeaver.zip

    DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。 DBeaver经官方测试,其支持:MySQL、Oracle、PostgreSQL、IBM DB2、Microsoft SQL ...

    dbeaver-setup.exe

    DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。 DBeaver经官方测试,其支持:MySQL、Oracle、PostgreSQL、IBM DB2、Microsoft SQL ...

    一款强大的多数据连接工具dbeaver,页面操作简洁。

    DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。 DBeaver经官方测试,其支持:MySQL、Oracle、PostgreSQL、IBM DB2、Microsoft SQL ...

    DBeaver是一个通用的数据库管理工具和SQL客户端

    DBeaver 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL, PostgreSQL, Oracle, ...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。

    dbeaver一个通用的数据库管理工具和 SQL 客户端

    DBeaver [1] 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL, PostgreSQL, ...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。

Global site tag (gtag.js) - Google Analytics