`

ORACLE操作blob与clob

 
阅读更多

将JAVA对象存储到ORACLE中:

http://blog.csdn.net/skytalemcc/article/details/5286602

 

oracle中blob与clob的区别

http://jelly.iteye.com/blog/65796

 

以下转自:http://blog.csdn.net/skytalemcc/article/details/5286602

一、区别和定义

      LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列
  LONG RAW: 可变长二进制数据,最长2G
  CLOB:  字符大对象Clob 用来存储单字节的字符数据
  NCLOB: 用来存储多字节的字符数据
  BLOB: 用于存储二进制数据
  BFILE: 存储在文件中的二进制数据,这个文件中的数据只能被只读访。但该文件不包含在数据库内。

        bfile字段实际的文件存储在文件系统中,字段中存储的是文件定位指针.bfile对oracle来说是只读的,也不参与事务性控制和数据恢复.
  
  CLOB,NCLOB,BLOB都是内部的LOB(Large Object)类型,最长4G,没有LONG只能有一列的限制

  要保存图片、文本文件、Word文件各自最好用哪种数据类型?
  --BLOB最好,LONG RAW也不错,但Long是oracle将要废弃的类型,因此建议用BLOB。

二、操作

1、 get

CLOB
//获得数据库连接    
    Connection con = ConnectionFactory.getConnection();    
    con.setAutoCommit(false);    
    Statement st = con.createStatement();    
    //不需要“for update”    
    ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1");    
    if (rs.next())    
    {    
        java.sql.Clob clob = rs.getClob("CLOBATTR");    
        Reader inStream = clob.getCharacterStream();    
        char[] c = new char[(int) clob.length()];    
        inStream.read(c);    
        //data是读出并需要返回的数据,类型是String    
        data = new String(c);    
        inStream.close();    
    }    
    inStream.close();    
    con.commit();    
    con.close();    

 

BLOB

//获得数据库连接    
    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();    

 

 

2、 put

CLOB
//获得数据库连接    
    Connection con = ConnectionFactory.getConnection();    
    con.setAutoCommit(false);    
    Statement st = con.createStatement();    
    //插入一个空对象empty_clob()    
    st.executeUpdate("insert into TESTCLOB (ID, NAME, CLOBATTR) values (1, "thename", empty_clob())");    
    //锁定数据行进行更新,注意“for update”语句    
    ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");    
    if (rs.next())    
    {    
        //得到java.sql.Clob对象后强制转换为oracle.sql.CLOB    
        oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("CLOBATTR");    
        Writer outStream = clob.getCharacterOutputStream();    
        //data是传入的字符串,定义:String data    
        char[] c = data.toCharArray();    
        outStream.write(c, 0, c.length);    
    }    
    outStream.flush();    
    outStream.close();    
    con.commit();    
    con.close();    

 

BLOB

//获得数据库连接    
    Connection con = ConnectionFactory.getConnection();    
    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();    

 

分享到:
评论

相关推荐

    oracle(blob转换为clob)

    这一步骤对于将BLOB转换为CLOB至关重要,因为CLOB本质上是一种字符数据类型,而不能直接与二进制数据交互。通过使用`UTL_RAW.CAST_TO_VARCHAR2`,我们可以将BLOB数据转换为中间的VARCHAR2格式,然后进一步转换为CLOB...

    oracle Blob转换Clob

    #### 知识点一:Oracle Blob与Clob的基本概念 - **Blob (Binary Large Object)**:在Oracle数据库中,Blob类型用于存储大量的二进制数据,如图像、视频或文档等非结构化数据。 - **Clob (Character Large Object)**...

    oracle中的Blob和Clob区别

    ### Oracle中的BLOB和CLOB的区别 在Oracle数据库中,`BLOB`(Binary Large Object)和`CLOB`(Character Large Object)是用于存储大量数据的两种特殊数据类型。这两种类型都属于`LOB`(Large Object)类别,主要...

    oracle Blob Clob 大数处理 代码

    以上是Oracle Blob和Clob处理的一些核心知识点,实际应用中还需要结合具体的编程语言(如Java, PL/SQL等)和框架来编写代码实现文件上传下载、大数操作等功能。在处理大对象时,需要充分考虑性能、存储和安全等因素...

    Oracle导出Clob,Blob工具

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

    BLOB和CLOB的区别以及在ORALCE中的插入和查询操作

    了解BLOB和CLOB的区别以及如何在Oracle中进行插入和查询操作对于数据库开发者和管理员来说至关重要。 首先,我们来看BLOB和CLOB的主要区别: 1. 数据类型:BLOB用于存储二进制大对象,如图片、视频、音频文件或者...

    图片存入Oracle中,用clob和blob两种方式

    在数据库管理中,存储非结构化数据...综上所述,`CLOB`和`BLOB`都是在Oracle中存储图片的有效方法,具体选择哪种方式取决于应用场景和需求。`ClobAndBlob`工具提供了一种便捷的方式来体验和比较这两种方式的使用效果。

    oracle中使用jdbc读写clob和blob字段

    Oracle 中使用 JDBC 读写 CLOB 和 BLOB 字段 在 Oracle 中,使用 JDBC 读写 CLOB(Character Large ...在 Oracle 中使用 JDBC 读写 CLOB 和 BLOB 字段需要注意数据的大小和类型,并选择合适的方法来进行读写操作。

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

    1. **BLOB与CLOB数据类型**: BLOB(Binary Large Object)存储二进制大对象,如图像、音频或视频文件。CLOB(Character Large Object)存储文本数据,如长篇文本或XML文档。在不同数据库系统中,对LOB的支持和处理...

    weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB 类型转换解决办法

    这是因为 WebLogic 服务器为了更好地管理和操作数据库连接,会使用自己的包装类 `weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB` 来表示 CLOB 类型的数据,而不是直接使用 Oracle 提供的标准 `oracle.sql.CLOB` 类。...

    Oracle8i对Blob和Clob类型的操作

    在Oracle SQL*Plus环境中,可以使用以下代码操作BLOB或CLOB: ```sql DECLARE lob_loc BLOB; file_in BFILE := BFILENAME('DIRECTORY_NAME', 'FILE_NAME'); BEGIN DBMS_LOB.CREATETEMPORARY(lob_loc, TRUE); ...

    Mybatis 处理 CLOB、BLOB 类型数据

    Mybatis 处理 CLOB、BLOB 类型数据 MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis 框架时,如何正确地处理大字段类型的数据。CLOB(Character Large OBject)和 BLOB(Binary Large OBject)都是大字段类型...

    mysql和Oracle在对clob和blob字段的处理

    - 存储机制:MySQL的`TEXT`和`BINARY`系列数据类型通常存储在数据页中,而Oracle的`CLOB`和`BLOB`可以存储在表空间中,允许更大的数据量。 - 索引支持:Oracle支持对`CLOB`和`BLOB`字段建立索引,而MySQL的索引...

    Oracle导出Clob,Blob工具版本2

    Oracle数据库在存储大对象(BLOB和CLOB)时提供了强大的功能,但处理这些类型的数据进行导入导出可能会带来挑战。"Oracle导出Clob,Blob工具版本2" 是一个专为解决这个问题而设计的应用程序,它改进了对CLOB...

    oracle对大对象类型操作:blob,clob,nclob,bfile

    Oracle数据库系统支持对大型数据对象(LOBs,Large Objects)的操作,这包括BLOB、CLOB、NCLOB和BFILE四种类型。每种类型都有其特定的用途和特性,适用于存储不同类型的大数据。 1. BLOB(Binary Large Object): ...

    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`。这两个接口提供了读取和写入大数据...

    使用Jdbc4操作Blob,Clob

    这篇博客“使用Jdbc4操作Blob,Clob”将深入讲解如何利用JDBC4 API来处理Blob和Clob对象。 Blob通常用于存储二进制数据,如图片、音频或视频文件,而Clob则用于存储大量文本数据,如长篇的文本或XML文档。在JDBC4中...

    Hibernate对BLOB CLOB操作

    同时,确保数据库支持高效的BLOB和CLOB操作,比如Oracle的BFILE类型或使用流式处理。 总之,Hibernate提供了对BLOB和CLOB的便利支持,允许开发者在Java应用中轻松地处理大数据对象,从而实现与数据库的高效交互。...

    JAVA对clob的操作

    CLOB操作与BLOB操作类似,但是在获取java.sql.Clob对象后需要强制转换为oracle.sql.CLOB对象,以便使用getCharacterOutputStream()方法将数据写入CLOB字段。 三、出库操作 出库操作可以使用ResultSet.getBlob()或...

    oracle中的BLOB(照片)转换到mysql中

    本篇将详细讲解如何在Oracle与MySQL之间进行BLOB类型的转换,特别是针对照片的处理。 首先,让我们了解BLOB类型。BLOB是一种可以存储大量二进制数据的对象,分为四种子类型:BLOB、CLOB、NCLOB和BFILE。在Oracle中...

Global site tag (gtag.js) - Google Analytics