`
wangronaldo
  • 浏览: 99598 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

JDBC读写Oracle10g的CLOB、BLOB

阅读更多
JDBC读写Oracle10g的CLOB、BLOB

环境:
Windows XP Professional 5.1 Build 2600 (Service Pack 3)
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
http://download.oracle.com/otn/u ... 10201/ojdbc14_g.jar
JDK1.6u16

TNS名:
# tnsnames.ora Network Configuration File: d:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

ORADB =
    (DESCRIPTION =
        (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
        )
        (CONNECT_DATA =
            (SID = ORCL)
        )
    )

MYORCL =
    (DESCRIPTION =
        (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
        )
        (CONNECT_DATA =
            (SERVICE_NAME = myorcl)
        )
    )


数据脚本:
create table TEST_ORALOB
(
    ID         VARCHAR2(20),
    TSBLOB BLOB not null,
    TSCLOB CLOB not null
)

测试代码:
package lavasoft.oralob.common;

import oracle.sql.BLOB;

import java.io.*;
import java.sql.*;

/**
* JDBC读写Oracle10g的CLOB、BLOB
*
* @author: leizhimin 2010-5-26 21:12:55
*/
public class TestOraLob {

        public static void main(String[] args) {
                insertBlob();
                queryBlob();
        }

        public static void insertBlob() {
                Connection conn = DBToolkit.getConnection();
                PreparedStatement ps = null;
                try {
                        String sql = "insert into test_oralob (ID, TSBLOB, TSCLOB) values (?, ?, ?)";
                        ps = conn.prepareStatement(sql);
                        ps.setString(1, "100");
                        //设置二进制BLOB参数
                        File file_blob = new File("C:\\a.jpg");
                        InputStream in = new BufferedInputStream(new FileInputStream(file_blob));
                        ps.setBinaryStream(2, in, (int) file_blob.length());
                        //设置二进制CLOB参数
                        File file_clob = new File("c:\\a.txt");
                        InputStreamReader reader = new InputStreamReader(new FileInputStream(file_clob));
                        ps.setCharacterStream(3, reader, (int) file_clob.length());
                        ps.executeUpdate();
                        in.close();
                } catch (IOException e) {
                        e.printStackTrace();
                } catch (SQLException e) {
                        e.printStackTrace();
                } finally {
                        DBToolkit.closeConnection(conn);
                }
        }

        public static void queryBlob() {
                Connection conn = DBToolkit.getConnection();
                PreparedStatement ps = null;
                Statement stmt = null;
                ResultSet rs = null;
                try {
                        String sql = "select TSBLOB from TEST_ORALOB where id ='100'";
                        stmt = conn.createStatement();
                        rs = stmt.executeQuery(sql);
                        if (rs.next()) {
                                //读取Oracle的BLOB字段
                                InputStream in = rs.getBinaryStream(1);
                                File file = new File("c:\\a1.jpg");
                                OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
                                byte[] buff1 = new byte[1024];
                                for (int i = 0; (i = in.read(buff1)) > 0;) {
                                        out.write(buff1, 0, i);
                                }
                                out.flush();
                                out.close();
                                in.close();
                                //读取Oracle的CLOB字段
                                char[] buff2 = new char[1024];
                                File file_clob = new File("c:\\a1.txt");
                                OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file_clob));
                                Reader reader = rs.getCharacterStream(1);
                                for (int i = 0; (i = reader.read(buff2)) > 0;) {
                                        writer.write(buff2, 0, i);
                                }
                                writer.flush();
                                writer.close();
                                reader.close();
                        }
                        rs.close();
                        stmt.close();
                } catch (IOException e) {
                        e.printStackTrace();
                } catch (SQLException e) {
                        e.printStackTrace();
                } finally {
                        DBToolkit.closeConnection(conn);
                }
        }
}

执行后没有异常,查看C盘,文件已经复制出一份,说明写入和读取都是成功的。


如果是将一个字符串写入Clob字段,则需要做简单的变化:
  //设置二进制CLOB参数  
  String xxx = "abcdefg";
  ps.setCharacterStream(3, new StringReader(xxx), xxx.getBytes("GBK").length);  
  ps.executeUpdate();  
  in.close();
分享到:
评论

相关推荐

    jdbc读写Oracle的CLOB字段

    JDBC读写Oracle的CLOB字段

    clob-blob.rar_blob and clob_clob_java CLOB_java oracle cl_oracle

    对于CLOB和BLOB字段,Oracle JDBC驱动提供了`oracle.jdbc.driver.OracleClob`和`oracle.jdbc.driver.OracleBlob`类,它们实现了Java的标准接口`java.sql.Clob`和`java.sql.Blob`。这两个接口提供了读取和写入大数据...

    sql server中的image类型的数据导出到oracle的clob字段中

    为了将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中,我们需要使用Java 语言和 JDBC 驱动程序。下面是一个示例代码,演示如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中: ...

    使用Jdbc4操作Blob,Clob

    在Java的数据库编程中,JDBC(Java Database Connectivity)是一个重要的接口,用于与各种数据库进行交互。当涉及到处理大型对象...无论是直接使用JDBC还是结合ORM框架,都可以灵活地实现对Blob和Clob的读写操作。

    关于在Hibernate中对于Clob,Blob字段的处理方法

    本篇将详细介绍在Hibernate中如何处理Clob和Blob字段,以及使用特定Oracle JDBC驱动程序的优势。 首先,Hibernate通过`org.hibernate.type`包中的`ClobType`和`BlobType`来映射Clob和Blob。在实体类中,你需要定义...

    解析jdbc处理oracle的clob字段的详解

    在Java的JDBC环境中,处理Oracle数据库中的CLOB(Character Large Object)字段是一项常见的任务,尤其是在存储大量文本数据时。CLOB类型用于存储超过4000个字符的字符串数据。以下是对`jdbc`处理`oracle`的`clob`...

    使用hibernate对oracle读取blob

    本文将详细介绍如何使用Hibernate和JDBC读取和存储Oracle数据库中的Blob对象。 ### 1. Hibernate Blob操作 在Hibernate中,Blob对象通常与Java的`java.sql.Blob`接口相对应。在实体类中,你可以定义一个Blob类型的...

    jdbc批量插入大字段

    - **使用Oracle特定的Blob处理**:Oracle提供了`oracle.sql.BLOB`类,它具有更高级别的功能,如直接从文件系统读写Blob,可以减少内存消耗。 在实际应用中,"batchinsert"可能是一个包含示例代码的文件,展示了如何...

    spring+hibernate操作oracle的clob字段

    在J2EE开发中,处理大数据对象(如大文本或二进制数据)时,Oracle数据库的CLOB...通过以上配置和操作,你可以在Spring和Hibernate的环境中顺利地对Oracle数据库的CLOB字段进行读写,满足J2EE应用中的大数据存储需求。

    java将图片写入数据库,并读出来(blob clob)

    这个过程通常涉及到Blob和Clob数据类型,它们是Java中的两种特殊对象,用于存储大对象(LOB)。Blob用于存储二进制数据,如图片、音频或视频文件,而Clob则用于存储字符数据,比如长文本。以下是如何使用Java处理...

    Base64及oracle11g的jar.zip

    同时,对于大数据量的CLOB操作,可能需要优化数据库性能,如使用BLOB(Binary Large Object)存储二进制数据,或者分批读写以减少内存占用。 总之,Base64编码和Oracle 11g的CLOB数据类型在Java开发中扮演着重要...

    java操作clob

    本教程将详细介绍如何在 Java 中使用 JDBC 和 JNDI 连接访问 Oracle 数据库,对 CLOB 字段进行读写操作。 首先,我们创建两个测试表,一个包含 BLOB 字段,一个包含 CLOB 字段: ```sql CREATE TABLE TESTBLOB ( ...

    2022年优秀-Oracle数据库中的Web服务.pptx

    Oracle 数据库 10g 中的 Web 服务可以使用标准的或第三方的 Java 库扩展数据库功能,实现对 PL/SQL 类型(CLOB、BLOB)的 Web 服务支持。 6. 快速连接故障切换 Oracle 数据库 10g 中的 Web 服务可以实现快速连接...

    Expert Oracle JDBC Programming - Apress

    - **大对象处理**:讲解了如何通过JDBC处理Oracle的大对象(LOBs),如BLOB、CLOB和NCLOB。 - **序列与触发器**:介绍了Oracle数据库中的序列和触发器的使用方法,以及如何通过JDBC与它们进行交互。 - **数据类型...

    spring blob相关

    在使用Spring与Oracle的BLOB字段交互时,确保正确配置数据源和JDBC驱动。同时,Oracle数据库的特定特性,如LOB缓存策略、LOB的生命周期管理等,也需要根据项目需求进行适当调整。 总之,Spring和Oracle结合处理BLOB...

    Oracle函数_JDBC常用写法

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,其...总的来说,掌握Oracle的常用函数和JDBC的基本操作是Java开发者必备的技能,这有助于高效地实现数据库的读写操作,并与各种类型的数据库进行无缝连接。

Global site tag (gtag.js) - Google Analytics