Oracle中Blob和Clob类型的区别

一、BLOB   

  BLOB全称为二进制大型对象(Binary Large Object)。   

  它用于存储数据库中的大型二进制对象。
  可存储的最大大小为4G字节。

二、CLOB

  CLOB全称为字符大型对象(Character   Large   Object)。

  它与LONG数据类型类似,只不过CLOB用于存储数据库中的大型单字节字符数据块,不支持宽度不等的字符集。

  可存储的最大大小为4G字节。

 

三、使用场景

  通常像图片、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去,如:保存位图。

  而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便,如:保存XML文档。

  BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的。

  其实两个是可以互换的,或者可以直接用LOB字段代替这两个。

  但是为了更好的管理ORACLE数据库,通常像图片、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去。

  而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便。

 

四、JAVA里面对CLOB的操作

在绝大多数情况下,使用2种方法使用CLOB:

  1.相对比较小的,可以用String进行直接操作,把CLOB看成字符串类型即可;

  2.如果比较大,可以用 getAsciiStream 或者 getUnicodeStream 以及对应的 setAsciiStream 和 setUnicodeStream 即可。

A、读取数据

1 ResultSet rs = stmt.executeQuery("SELECT TOP 1 * FROM Test1");//select top 1 * from是sql server的语法
2 rs.next();
3 Reader reader = rs.getCharacterStream(2);

B、插入数据

1 PreparedStatement pstmt = con.prepareStatement("INSERT INTO test1 (c1_id, c2_vcmax) VALUES (?, ?)");
2 pstmt.setInt(1, 1);
3 pstmt.setString(2, htmlStr);
4 pstmt.executeUpdate();

C、更新数据

1 Statement stmt = con.createStatemet();
2 ResultSet rs = stmt.executeQuery("SELECT * FROM test1");
3 rs.next();
4 Clob clob = rs.getClob(2);
5 long pos = clob.position("dog", 1);
6 clob.setString(1, "cat", len, 3);
7 rs.updateClob(2, clob);
8 rs.updateRow();

 

posted @ 2020-11-19 14:13  阿森2020  阅读(882)  评论(0)    收藏  举报