`

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

相关推荐

    鲸鲨云国产可视化数据库迁移工具DBPorterPlus免费版1.2

    完全国产自主知识产权的数据库迁移工具:鲸鲨云DBPorterPLus。...功能齐全:全库迁移,支持数据表、视图、约束、序列,支持大对象(Blob,Clob),支持导出DDL。 性能优异:实时传输,直连数据库,批量读取和插入。

    oracle数据库修复

    支持CLOB、NCLOB和BLOB CLOB支持Big Endian和Little Endian字节序 支持LOB分区,子分区 支持同一个表中,不同LOB列使用不同CHUNK SIZE的情况 CLOB数据可以导出到与其他列相同的文件中,或存储到单独的文件 LOB...

    Oracle数据库恢复工具Oracle Database Unloader(ODU)3.09

    支持CLOB、NCLOB和BLOB CLOB支持Big Endian和Little Endian字节序 支持LOB分区,子分区 支持同一个表中,不同LOB列使用不同CHUNCK SIZE的情况 CLOB数据可以导出到与其他列相同的文件中,或存储到单独的文件中 ...

    Oracle数据库查找替换工具

    Oracle 数据库 查找替换工具 (*目前只支持Oracle) 在整个数据库中查找某个字符串。...支持字符串、CLOB、BLOB字段类型。 支持字符串替换功能。 可定义查找的表、字段、字段类型。 可同时查询多个字符串。

    赤兔Oracle数据库恢复软件 v11.6.zip

    5.支持的数据类型包括:NUMBER, CHAR, VARCHAR2, NCHAR,NVARHCAR2, LONG, DATE, RAW, LONG RAW, BLOB, CLOB, TIMESTAMP (9i ) , BINARY FLOAT, BINARY DOUBLE (10g ) 6.全面支持LOB字段:支持CLOB、NCLOB和BLOBCLOB...

    Java数据库编程宝典2

    第14章 使用Blob和Clob管理图像和文档 14.1 大对象 14.1.1 使用Blob存储二进制数据 14.1.2 使用Clob存储文本数据 14.2 从浏览器上载图像或文档 14.2.1 用于从DBMS下载大对象的servlet 14.3 小结 第15章 ...

    Java数据库编程宝典4

    第14章 使用Blob和Clob管理图像和文档 14.1 大对象 14.1.1 使用Blob存储二进制数据 14.1.2 使用Clob存储文本数据 14.2 从浏览器上载图像或文档 14.2.1 用于从DBMS下载大对象的servlet 14.3 小结 第15章 ...

    Java数据库编程宝典1

    第14章 使用Blob和Clob管理图像和文档 14.1 大对象 14.1.1 使用Blob存储二进制数据 14.1.2 使用Clob存储文本数据 14.2 从浏览器上载图像或文档 14.2.1 用于从DBMS下载大对象的servlet 14.3 小结 第15章 ...

    Java数据库编程宝典3

    第14章 使用Blob和Clob管理图像和文档 14.1 大对象 14.1.1 使用Blob存储二进制数据 14.1.2 使用Clob存储文本数据 14.2 从浏览器上载图像或文档 14.2.1 用于从DBMS下载大对象的servlet 14.3 小结 第15章 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     11.3 操纵Blob和Clob类型数据  11.4 小结  11.5 思考题 第12章 映射继承关系  12.1 继承关系树的每个具体类对应一个表  12.1.1 创建映射文件  12.1.2 操纵持久化对象  12.2 继承关系树的根类对应一个表  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     11.3 操纵Blob和Clob类型数据  11.4 小结  11.5 思考题 第12章 映射继承关系  12.1 继承关系树的每个具体类对应一个表  12.1.1 创建映射文件  12.1.2 操纵持久化对象  12.2 继承关系树的根类对应一个表  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     11.3 操纵Blob和Clob类型数据  11.4 小结  11.5 思考题 第12章 映射继承关系  12.1 继承关系树的每个具体类对应一个表  12.1.1 创建映射文件  12.1.2 操纵持久化对象  12.2 继承关系树的根类对应一个表  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     11.3 操纵Blob和Clob类型数据  11.4 小结  11.5 思考题 第12章 映射继承关系  12.1 继承关系树的每个具体类对应一个表  12.1.1 创建映射文件  12.1.2 操纵持久化对象  12.2 继承关系树的根类对应一个表  ...

    ssh(structs,spring,hibernate)框架中的上传下载

     我们前面已经指出Oracle的Lob字段和一般类型的字段在操作上有一个明显的区别--那就是你必须首先通过Oracle的empty_blob()/empty_clob()初始化Lob字段,然后获取该字段的引用,通过这个引用更改其值。所以要完成对...

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    5.1 PL/SQL定义和使用PL/SQL的原因 5.2 基本PL/SQL编程结构 5.3 定义PL/SQL数据类型 5.3.1 有效字符集 5.3.2 算术操作符 5.3.3 varchar2类型 5.3.4 数字类型 5.3.5 日期类型 5.3.6 布尔类型 5.4 在SQL*Plus中...

    Oracle Database 11g初学者指南--详细书签版

    5.1 PL/SQL定义和使用PL/SQL的原因 122 5.2 基本PL/SQL编程结构 123 5.3 定义PL/SQL数据类型 124 5.3.1 有效字符集 124 5.3.2 算术操作符 125 5.3.3 varchar 2类型 126 5.3.4 数字类型 127 5.3.5 日期类型 ...

    北大青鸟Oracle教程集1

    4-4 Raw 和 Long Raw 数据类型 ―用于存储二进制数据 用于存储二进制数据 LOB 数据类型 ―CLOB ―BLOB ―BFILE 数据定义语言 数据定义命令 ―CREATE 命令 ―ALTER 命令 ―DROP 命令 ―TRUNCATE 命令 数据操纵语言 ...

    北大青鸟Oracle教程集2

    4-4 Raw 和 Long Raw 数据类型 ―用于存储二进制数据 用于存储二进制数据 LOB 数据类型 ―CLOB ―BLOB ―BFILE 数据定义语言 数据定义命令 ―CREATE 命令 ―ALTER 命令 ―DROP 命令 ―TRUNCATE 命令 数据操纵语言 ...

    Hibernate注释大全收藏

    具体的java.sql.Clob, Character[], char[] 和 java.lang.String 将被持久化为 Clob 类型. java.sql.Blob, Byte[], byte[] 和 serializable type 将被持久化为 Blob 类型。 @Lob public String getFullText() { ...

Global site tag (gtag.js) - Google Analytics