`
xiaotao.2010
  • 浏览: 216890 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

oracle-操作lob文件(举例Blob)

 
阅读更多

一.写入BLOB



1.先在blob中插入empty_blob()



2.获得对刚刚插入记录的引用

BLOB blob = (BLOB) rs.getBlob("你的blob字段名称");

3.写入

OutputStream out = blob.getBinaryOutputStream();

out.write(ENCYPWD);//注意这里

二.读出BLOB



1.blob  = rs.getBlob("你的blob字段名称");



2.InputStream is = blob.getBinaryStream();

int length = (int) blob.length();

byte[] buffer = new byte[length];

is.read(buffer);

is.close();



3.你有了is就随便处理了

比如说输出到一个文件

FileOutputStream fo = new FileOutputStream(filename);//数据到的文件名

fo.write(buffer);

fo.close();


一、BLOB操作

1、入库

(1)JDBC方式

 

    //通过JDBC获得数据库连接

    Class.forName("oracle.jdbc.driver.OracleDriver");

    Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:testdb", "test", "test");

    con.setAutoCommit(false);

    Statement st = con.createStatement();

    //插入一个空对象empty_blob()

    st.executeUpdate("insert into TESTBLOB (ID, NAME, BLOBATTR) values (1, "thename", empty_blob())");

    //锁定数据行进行更新,注意“for update”语句

    ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1 for update");

    if (rs.next())

    {

        //得到java.sql.Blob对象后强制转换为oracle.sql.BLOB

        oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("BLOBATTR");

        OutputStream outStream = blob.getBinaryOutputStream();

        //data是传入的byte数组,定义:byte[] data

        outStream.write(data, 0, data.length);

    }

    outStream.flush();

    outStream.close();

    con.commit();

    con.close(); 


 2、出库

    //获得数据库连接

    Connection con = ConnectionFactory.getConnection();

    con.setAutoCommit(false);

    Statement st = con.createStatement();

    //不需要“for update”

    ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1");

    if (rs.next())

    {

        java.sql.Blob blob = rs.getBlob("BLOBATTR");

        InputStream inStream = blob.getBinaryStream();

        //data是读出并需要返回的数据,类型是byte[]

        data = new byte[input.available()];

        inStream.read(data);

        inStream.close();

    }

    inStream.close();

    con.commit();

    con.close();

分享到:
评论

相关推荐

    Oracle8i对Blob和Clob类型的操作

    在Oracle8i版本中,数据库支持了大型对象(LOB)类型,包括BLOB(Binary Large Object)和CLOB(Character Large Object)。这两种数据类型用于存储大量二进制数据(如图片、视频或文档)和文本数据(如长篇文章或...

    cx_Oracle-7.3.0.tar.gz

    - 可以处理 LOB(大型对象)数据类型,如 BFILE、BLOB、CLOB 和 NCLOB。 10. **集成其他框架**: - `cx_Oracle` 可以与 Flask、Django 等 Web 框架结合,为 Web 应用提供数据库支持。 综上所述,`cx_Oracle-...

    oracle dbms_lob

    Oracle数据库系统中,`DBMS_LOB`是一个重要的PL/SQL包,专门用于处理大型对象(LOBs,Large Object)。LOBs是Oracle提供的一种数据类型,用于存储大量数据,如文本、图像、音频或视频文件等。这个包包含了各种过程和...

    Oracle数据库中LOB的调优.pdf

    LOB数据类型包括BLOB、CLOB、NCLOB和BFILE四种,分别用于存储二进制数据、字符数据、国家字符数据和外部文件数据。在Oracle数据库中,LOB数据类型的存储和优化是非常重要的,因为LOB数据类型占用的存储空间较大,且...

    批量导出ORACLE数据库BLOB字段生成文件

    本教程将详细讲解如何批量导出Oracle数据库中的BLOB字段并生成文件,适用于需要定期或一次性处理大量图片或其他BLOB数据的场景。 首先,确保你已经在本地安装了Oracle客户端。Oracle客户端提供了SQL*Plus和其他工具...

    cx_Oracle-5.2.1-11g.win-64--py2.7.exe.zip

    它支持Oracle的所有主要特性,包括游标、事务管理、PL/SQL块执行、绑定变量、批量操作、LOB处理等。cx_Oracle的安装通常涉及到下载对应的二进制文件,如提供的cx_Oracle-5.2.1-11g.win-amd64-py2.7.exe,然后在...

    cx_Oracle-6.1.tar.gz

    10. **Oracle特性支持**:包括Oracle的LOB(Large Object)操作、ROWID访问、触发器、存储过程调用、PL/SQL包的使用等。 综上所述,cx_Oracle-6.1.tar.gz文件是Python开发者连接Oracle数据库的重要工具,通过这个库...

    cx_Oracle-5.2.1-11g.win-amd64-py3.5

    安装完成后,开发者可以通过`pip install`或直接运行exe文件将cx_Oracle库添加到Python环境中,然后就可以在Python程序中导入并使用cx_Oracle来连接和操作Oracle数据库了。 总之,cx_Oracle是Python开发者与Oracle...

    批量导出ORACLE数据库BLOB字段生成图片

    批量导出Oracle数据库中的BLOB字段生成图片,是一项常见的需求,尤其对于那些需要将数据库中的图片资源导出到本地文件系统的情况。下面将详细介绍这一过程及其相关知识点。 首先,我们需要理解BLOB类型。BLOB...

    oracle-jdbc-12.2.0.1.zip

    这个JAR文件包含了所有必要的类和资源,使得Java应用程序能够通过JDBC接口与Oracle数据库进行通信。以下是一些关于ojdbc8-资源.jar中包含的关键知识点: 1. **JDBC连接**: 连接Oracle数据库通常涉及以下步骤:加载...

    Oracle导出Clob,Blob工具

    2. **Oracle.ManagedDataAccess.dll**:这是Oracle官方提供的Managed Driver,它是一个.NET Framework库,允许开发者在.NET环境中直接访问Oracle数据库,支持Clob和Blob操作。 3. **SqlSugar.dll**:这是一个流行的...

    Oracle中LOB字段的存储管理和优化.pdf

    Oracle 中 LOB 字段的存储管理和优化 Oracle 中 LOB(Large OBjects)字段是一种特殊的数据类型,用于存储非结构化数据,如图像、音频、视频等。LOB 字段的存储管理和优化是数据库管理中一个重要的方面。本文将...

    oracle-instantclient(64bits)_win

    Oracle Instant Client是Oracle公司提供的一款轻量级的客户端软件,主要用以支持...通过以上步骤,你可以在Windows 7 64位系统上成功配置和使用Oracle Instant Client,实现对64位Oracle数据库的高效连接和数据操作。

    Oracle11g LOB表的操作实例.pdf

    ### Oracle11g LOB表的操作实例详解 #### 一、引言 在数据库领域,尤其是在处理大量文本或二进制数据时,Oracle 提供了LOB(Large Object)类型来支持大对象的存储。本文档将详细介绍如何在Oracle 11g中创建带有LOB...

    oracle(blob转换为clob)

    在Oracle数据库环境中,数据类型BLOB(Binary Large Object)用于存储大量的二进制数据,如图像、音频或视频文件,而CLOB(Character Large Object)则用于存储大量文本数据。在某些情况下,可能需要将BLOB类型的...

    Laravel开发-eloquent-serialized-lob

    "Eloquent-Serialized-Lob" 是一个专门为Laravel5设计的Eloquent扩展,它允许我们序列化LOB(Large Object)类型的字段,比如BLOB或CLOB。LOB字段通常用来存储大块的数据,如图片、文档或长文本。 首先,我们需要...

    Oracle中对LOB对象的操作.pdf

    处理LOB数据时,Oracle提供了一个强大的DBMS_LOB包,这个包简化了对内部LOB对象(BLOB和CLOB)的操作,包括读取和写入。然而,对于外部LOB对象BFILE,只能进行读操作,而写操作应该通过PL/SQL程序段来完成。 以下是...

    ORACLE LOB大对象处理

    BLOB(Binary Large Object)用于二进制数据,CLOB(Character Large Object)用于字符数据,NCLOB(National Character Large Object)用于Unicode字符数据,以及BFILE(Binary File)用于存储操作系统级别的文件。...

Global site tag (gtag.js) - Google Analytics