oracle中Blob和Clob类型的区别

摘要:
事实上,两者可以互换,也可以直接用LOB字段替换。然而,为了更好地管理ORACLE数据库,图片、文件、音乐等信息通常存储在BLOB字段中。首先,将文件转换为二进制文件,然后进行存储。对于文章或长文本,CLOB用于存储,这为以后的查询、更新和存储操作提供了极大的便利。BLOB是二进制大对象的全名。

一、oracle中Blob和Clob类型的区别
BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的。其实两个是可以互换的的,或者可以直接用LOB字段代替这两个。但是为了更好的管理ORACLE数据库,通常像图片、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去。而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便。
BLOB全称为二进制大型对象(Binary Large Object)。它用于存储数据库中的大型二进制对象。可存储的最大大小为4G字节 
CLOB全称为字符大型对象(Character Large Object)。它与LONG数据类型类似,只不过CLOB用于存储数据库中的大型单字节字符数据块,不支持宽度不等的字符集
可存储的最大大小为4G字节,Clob可以存储单字节字符数据,Blob可以存储无结构的二进制数据
二、empty_clob()和empty_blob()的使用:
在向带有Lob类型的字段加入数据时,使用EMPTY_CLOB()初始化CLOB字段,然后再使用输出流向字段中写数据(这些数据往往都是字节流量相对较大的). 如果是直接在oracle客户端向表中写数据,就不用这么麻烦了.好了,具体的操作:

 

CREATE TABLE article(

 

subject VARCHAR2(50 char),

 

content CLOB ,

 

tstamp TIMESTAMP DEFAULT SYSDATE

 

);

 

 

--使用EMPTY_CLOB()来初始化CLOB字段

 

String strSql = "INSERT INTO article(subject,content) VALUES('文章标题:Empty_clob()的使用方法',EMPTY_CLOB())";

 

Connection conn = db.getConnection();

 

conn.setAutoCommit(false);

 

 

PreparedStatement ptmt = conn.prepareStatement(sqlBuffer.toString());

 

ptmt.executeUpdate();

 

strSql = "select content from article where subject = "+subject+" for update ";

 

ResultSet rs = ptmt.executeQuery(strSql);

 

if (rs.next()) {

 

/**//* 取出此CLOB对象 */

 

oracle.sql.CLOB clob = null;

 

clob = (oracle.sql.CLOB) rs.getClob("content");

 

/**//* 向CLOB对象中写入数据 */

 

BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());

 

out.write(content);

 

out.close();

 

out = null;

 

conn.commit();

 

}

在平台中使用的原理:

1、通过select语句获得需要修改的行+for update

2、遍历resultset 同rs.next()获得blob列字段对象

3、同blob列字段对象创建输出流

4、数据流中写入msg

5、commit提交到db

代码如下:

BLOB pBlob = (BLOB)RS.getBlob(strFName);
OutputStream out = pBlob.getBinaryOutputStream();
byte[] pBytes = (byte[])(byte[])pImageFieldValues.get(i);
out.write(pBytes);
out.close();

 

免责声明:文章转载自《oracle中Blob和Clob类型的区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇脚本_批量修改文件后缀名【知识整理】这可能是最好的RxJava 2.x 入门教程(三)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

js 计算浮点数

JS的浮点计算 最近遇到了数值计算的时候,计算结果出现了类似于199.9999999999999999999的情况,但是被用来计算的两个数值都只是两位数。 就像这样      --------》         0.1 + 0.2 = 0.30000000000000004。 其实对于浮点数的四则运算,几乎所有的编程语言都会有类似精度误差的问题,...

meta标签

CreateTime--2017年9月28日15:14:30 Author:Marydon meta标签 1.位置META标签是HTML标记HEAD区的一个关键标签,它位于HTML文档的<head>和<title>之间,它提供的信息虽然用户不可见,但却是文档的最基本的元信息。2.定义META标签用来描述一个HTML网页文档的属性,...

转:如何用plsql从oracle中导入导出数据

如何使用PLSQL Developer从oracle数据库 导入导出数据   用pl/sql developer导出表的数据时有三种方式:Oracle Export,Sql Insert,pl/sql developer   只有“Oracle Export”方式导出再导入后,表结构和索引结构没有发生变化,另两种方式都改变了索引类型。另外   Sql In...

oracle 内置函数(二)字符函数

主要函数: 大小写转换函数 获取子字符串函数(字符串截取) 获取字符串长度函数 字符串连接函数 去除子字符串函数 字符替换函数 字符串出现次数 字符串按照特定符号拆分多行 一、大小写转换 1、upper:转大写 2、lower:转小写  3、initcap:首字母大写 二、获取子字符串函数(字符串截取) substr(str,beginIndex,...

Oracle sqlplus prelim 参数介绍

从Oracle10g开始,sqlplus提供了一个参数选项-prelim,用这个参数,在系统已经hang的时候。我们可以连接到SGA而不是数据库,也就是说没有session被创建。 一. 通过以下步骤可以获取系统信息: sqlplus -prelim / as sysdbaoradebug setmypidoradebug unlimit;oradebug...

Oracle数据库的函数,存储过程,程序包,游标,触发器

Oracle自定义函数 函数的主要特性是它必须返回一个值。创建函数时通过 RETURN 子句指定函数返回值的数据类型。函数的一些限制:● 函数只能带有 IN 参数,不能带有 IN OUT 或 OUT 参数。● 形式参数必须只使用数据库类型,不能使用 PL/SQL 类型。● 函数的返回类型必须是数据库类型 Create function 函数名称 retur...