`
daweiangel
  • 浏览: 325729 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类

Oracle中BLOB和CLOB字段的操作

阅读更多
一、区别和定义
       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
java 代码
//获得数据库连接    
     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
java 代码
//获得数据库连接    
     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
java 代码
//获得数据库连接    
     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
java 代码
//获得数据库连接    
     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)

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

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

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

    ORACLE中CLOB字段转String类型

    本文将详细介绍如何在Oracle中实现CLOB字段到字符串类型的转换,并探讨其中的关键技术和注意事项。 #### 一、CLOB概述 1. **定义**: - `CLOB`是Oracle数据库提供的一种特殊的数据类型,用于存储大文本数据。 - ...

    读取oracle数据库中clob字段的值

    ### 读取Oracle数据库中CLOB字段的值 在处理Oracle数据库时,经常会遇到需要读取CLOB(Character Large Object)类型字段的情况。CLOB主要用于存储大量的文本数据,如文章、文档等内容。由于CLOB类型的数据量可能...

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

    在数据库管理领域,MySQL和Oracle都是广泛使用的数据库系统,它们在处理特定数据类型时有各自的特点和策略。本文将深入探讨这两个...实际应用中,开发者应根据具体业务需求和性能指标,选择合适的数据类型和操作策略。

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

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

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

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

    Mybatis 处理 CLOB、BLOB 类型数据

    CLOB(Character Large OBject)和 BLOB(Binary Large OBject)都是大字段类型,用于存储大量的数据。 CLOB 类型用于存储文本数据,可以存储长文本、文章、备注等信息。在 Oracle 数据库中,CLOB 类型对应的数据库...

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

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

    Oracle导出Clob,Blob工具

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

    jdbc读写Oracle的CLOB字段

    JDBC读写Oracle的CLOB字段

    oracle Blob Clob 大数处理 代码

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

    Oracle如何对CLOB行字段来执行全文检索

    Oracle CLOB 行字段全文检索实现方法 Oracle 数据库中,CLOB 行字段是一种常用的数据类型,用于存储大...这些过程函数可以帮助开发者更好地操作 LOB 数据类型,实现对 CLOB 字段中的内容进行 Like 查找和其他操作。

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

    用户只需提供必要的连接信息和表字段名,就能自动批量导出BLOB字段中的图片。 总之,批量导出Oracle数据库中的BLOB字段生成图片涉及到了数据库连接、SQL查询、BLOB数据处理和文件I/O等多个技术环节。掌握这些知识点...

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

    在数据库迁移或数据同步的过程中,有时需要将含有大对象(LOB,包括BLOB和CLOB)的数据从一个数据库系统复制到另一个不完全支持LOB的数据库系统。本例中,我们讨论如何将DB2数据库中的BLOB数据类型复制到Oracle...

    Oracle导出Clob,Blob工具版本2

    "Oracle导出Clob,Blob工具版本2" 是一个专为解决这个问题而设计的应用程序,它改进了对CLOB(Character Large Object)和BLOB(Binary Large Object)数据类型的导出效率,特别是修复了上一版本中导出时间过长的问题...

    oracle blob 字段 读写 delphi

    本篇文章将深入探讨如何在Delphi中对Oracle数据库的BLOB字段进行读写操作。 首先,你需要在Delphi项目中引入Oracle数据库访问的相关组件,如DBExpress或ADO。DBExpress是Delphi内置的一个轻量级数据库访问框架,而...

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

    总结来说,从Oracle的BLOB类型字段中提取并转换到MySQL的过程涉及到查询、导出、上传等多个步骤。在实际操作中,需要对数据库API有深入理解,并注意数据的兼容性和性能优化。通过以上方法,你可以顺利地在两个数据库...

    Oracle8i对Blob和Clob类型的操作

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

    JAVA对clob的操作

    JAVA对CLOB的操作 在JAVA中,操作Oracle数据库中的BLOB和CLOB类型字段是一种常见的需求。...通过JDBC和JNDI两种方式可以实现入库和出库操作,但是在实现时需要注意强制转换对象的类型,以便正确地操作BLOB和CLOB字段。

Global site tag (gtag.js) - Google Analytics