`

BLOB和CLOB区别和定义

阅读更多

    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();   
分享到:
评论

相关推荐

    Blob和Clob使用例子

    Blob(Binary Large Object)和Clob(Character Large Object)是数据库中用来存储大量二进制数据和字符数据的两种特殊类型。在Java编程语言中,它们是`java.sql.Blob`和`java.sql.Clob`接口的实现,常用于与数据库...

    Hibernate对Blob,Clob的操作

    首先,我们需要在Hibernate映射文件(.hbm.xml)中定义Blob和Clob字段。对于Blob,可以这样声明: ```xml <property name="binaryData" type="blob"> ``` 这里的`name`属性对应Java实体类中的属性名,`type=...

    在SOAP消息中传输BLOB和CLOB数据

    - **兼容性**:不是所有SOAP服务端和客户端都支持MTOM,因此在设计系统时要考虑兼容性问题,确保客户端和服务端都能正确解析和处理包含BLOB和CLOB的SOAP消息。 综上所述,处理SOAP中的BLOB和CLOB数据需要理解编码...

    hibernate保存blob,clob对象

    在Java的持久化框架Hibernate中,Blob和Clob对象是用来处理大数据类型的,它们分别对应数据库中的BLOB(Binary Large Object)和CLOB(Character Large Object)。这篇文章将详细讲解如何在Hibernate中保存这两种...

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

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

    Mybatis 处理 CLOB、BLOB 类型数据

    Mybatis 处理 CLOB、BLOB 类型数据 MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis ...通过使用 MyBatis 处理 CLOB 和 BLOB 类型数据,可以方便地存储和读取大字段类型的数据,提高应用程序的性能和可扩展性。

    Hibernate对BLOB CLOB操作

    同时,Hibernate的实体映射文件(例如`Users.hbm.xml`)用于定义实体类与数据库表之间的映射关系,其中包括了如何处理BLOB和CLOB字段。 以`Users.hbm.xml`为例,假设我们有一个`Users`实体类,其中有一个`...

    Java存取OracleBlob字段,图片存储,Blob和BLOB的问题,Clob,oracle.docx

    #### 一、Blob 和 BLOB 的区别 在处理 Oracle 数据库中的二进制大型对象(Binary Large Object,简称 Blob)时,开发者经常会遇到两个相似但不同的概念:`java.sql.Blob` 和 `oracle.sql.BLOB`。 1. **`java.sql....

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

    1. 在实体类中定义Clob和Blob字段,并使用`@Lob`注解。 2. 配置Hibernate的JDBC连接,使用支持Clob和Blob高效操作的Oracle JDBC驱动。 3. 利用Hibernate提供的API进行增删改查操作,无需手动处理Clob和Blob的具体...

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

    3. **更新语句**:定义更新Blob和Clob字段的SQL语句。在这些更新语句中,需要使用占位符(问号`?`)来表示Blob或Clob参数。 4. **C#代码示例**:在C#程序中,使用`GbsConnection`创建数据库连接,并打开连接。然后...

    spring2通过jdbc的方式读取、更新数据库的clob或者blob类型的数据

    这篇博客主要探讨了如何使用Spring处理CLOB(Character Large Object)和BLOB(Binary Large Object)这两种大数据类型的字段。CLOB通常用于存储大文本数据,如文章、报告等,而BLOB则用于存储二进制大数据,如图片...

    详解jdbc实现对CLOB和BLOB数据类型的操作

    JDBC实现对CLOB和BLOB数据类型的操作 在数据库中,存在两种类型的数据:CLOB(Character Large OBject)和BLOB(Binary Large OBject),它们用于存储大型数据,如文本、图片、音频、视频等。对CLOB和BLOB数据类型...

    Hibernate操作Oarcle中Clob、Blob字段小结

    - 在Hibernate的实体类中,我们需要为Clob和Blob字段定义对应的属性,并使用`@Lob`注解来标记它们。例如: ```java @Lob private Clob largeText; @Lob private Blob binaryData; ``` - 对于Clob,可以使用`...

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

    4. **确定数据表和字段**:识别包含BLOB字段的表,以及存储图片文件名和实际图片数据的列。通常,文件名会存储在一个VARCHAR2类型的列中,而图片数据则存储在BLOB列中。 5. **编写SQL或PL/SQL脚本**:创建一个查询...

    ORACLE中CLOB字段转String类型

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

    ActiveXObject和Clob字段的插入更新

    在IT领域,ActiveXObject和Clob字段是两个重要的概念,主要与Web开发和数据库操作相关。ActiveXObject是Microsoft的一种技术,允许在Internet Explorer浏览器中创建和使用COM对象,而Clob是数据库中用于存储大量字符...

    ODI BLOB到Long Raw集成方法

    然而,由于历史原因,Long Raw在Oracle 9i及之后的版本中已被BLOB和CLOB取代,因为Long Raw有一些显著的限制和不便之处。 1. **Long Raw的限制**: - **单一性**:一张表中只能有一个LONG RAW类型的列。 - **索引...

    使用hibernate对oracle读取blob

    在实体类中,你可以定义一个Blob类型的属性来表示数据库中的Blob字段: ```java @Entity public class MediaEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Lob ...

Global site tag (gtag.js) - Google Analytics