`

BLOB和CLOB

阅读更多

       一、Oracle的基本数据类型

 

       1.字符数据类型

        CHAR:定长字符串,默认长度1B,最大长度255B

        VARCHAR2:变长字符串,必须指定最大字节数,最大长度2000B

        LONG:变长字符串,最大长度2G。一个表中最多只有一个LONG列,LONG列不能有索引,不能出现完整性约束。

        2.数字数据类型

        NUMBER:存储零、正负定点数或浮点数,最大进度38位。语法:NUMBER(P,S) P表示总的数字数,S表示小数点右边的数字位。

        FLOAT:指定浮点数 

        DATE:用于存储日期和时间信息。若要指定日期值,须用TO_DATE()将字符型的值或数值转化为日期型的值。日期型数据的默认格式为DD-MON-YY

        RAW及LONG RAW:存储字符串、浮点数、二进制数据等。RAW数据仅可存储和检索,不能执行串操作。

        ROWID:数据库表中的一个伪列。数据库中每一行都有一个地址,可通过查询ROWID获得行地址。值为16进制字符串。   

        BLOB:二进制数据可以存储到不同的表空间中。

        CLOB:字符型数据可以存储到不同的表空间中。

        BFILE:二进制文件可以存储在服务器上的外部文件中。

 

     二、BLOB与CLOB操作案例

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

相关推荐

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

    在数据库管理领域,BLOB(Binary Large Object)和CLOB(Character Large Object)是两种用于存储大量非结构化数据的数据类型。它们都是Oracle数据库中重要的字段类型,用于处理大数据量的文本或二进制文件。了解...

    JDBC中操作Blob、Clob等对象

    在JDBC(Java Database Connectivity)编程中,Blob和Clob是非常重要的数据类型。Blob(Binary Large Object)主要用于存储二进制大对象,如图像、音频文件等;而Clob(Character Large Object)则用于存储大量的文本...

    Blob和Clob使用例子

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

    oracle中的Blob和Clob区别

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

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

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

    Oracle8i对Blob和Clob类型的操作

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

    jdbc_blob_clob.rar

    标题“jdbc_blob_clob.rar”暗示了这个压缩包文件包含的内容与Java Database Connectivity (JDBC) 中处理Blob和Clob对象相关的知识。Blob是Binary Large Object的缩写,用于存储大块二进制数据,如图片、音频或视频...

    Hibernate对Blob,Clob的操作

    Blob和Clob是Java中用于处理大数据类型的数据对象,Blob用于存储二进制大对象,如图片、音频或视频,而Clob则用于存储字符大对象,如长文本。本文将详细介绍如何在Hibernate中操作Blob和Clob字段,实现数据的存储与...

    oracle Blob转换Clob

    ### Oracle Blob转换Clob ...通过以上内容的学习,可以了解到如何在Oracle数据库中实现Blob到Clob的转换过程,以及相关的注意事项和技术细节。这对于处理大数据量下的不同类型数据转换具有重要意义。

    hibernate保存blob,clob对象

    在Java的持久化框架Hibernate中,处理大数据类型如BLOB(Binary Large Object)和CLOB(Character Large Object)是一项常见的任务。BLOB用于存储二进制数据,如图片、视频或文档,而CLOB则用于存储大文本数据,如...

    CLOB、BLOB___CLOB与BLOB的区别

    CLOB 和 BLOB 的主要区别是:CLOB 使用 CHAR 来保存数据,而 BLOB 使用二进制保存数据。CLOB 主要用于存储字符数据,而 BLOB 主要用于存储二进制数据。 在 MySQL 中,BLOB 是个类型系列,包括:TinyBlob、Blob、...

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

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

    使用Jdbc4操作Blob,Clob

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

    Hibernate对BLOB CLOB操作

    在Java的持久化框架Hibernate中,BLOB和CLOB是用来处理大数据对象(Binary Large Object和Character Large Object)的。这两个类型常用于存储图像、视频、大文本等数据,因为它们可以容纳超过数据库标准列大小限制的...

    oracle(blob转换为clob)

    为了将BLOB转换为CLOB,我们需要考虑数据大小和处理效率。在示例代码中,`blob_to_clob`函数首先创建了一个临时的CLOB变量`v_clob`。然后,通过`DBMS_LOB.GETLENGTH`获取BLOB的总长度,计算出需要处理的次数`tmp_num...

    利用spring的jdbcTemplate处理blob、clob

    spring 中对大数据的处理,包括clob,blob的数据。比之jdbc下简便很多。

Global site tag (gtag.js) - Google Analytics