Oracle大型对象clob,blob以及java的访问方法

3 篇文章 0 订阅
Oracle的Clob、Blob、NClob三种大型对象,是用来保存较大的图形文件或带格式的文本文件,如Miceosoft Word文档,以及音频、视频等非文本文件,最大长度是4GB。
LOB有几种类型,取决于你使用的字节的类型,Oracle这些数据存储在数据库内部保存。可以执行读取、存储、写入等特殊操作。

在JAVA中,如果要对这些对象的字段进行insert、update操作的话,有特别的处理方式。举个例子:

建立表: CREATE TABLE clob_test(id number, value clob);

JAVA代码如下:
  1. import java.sql.*;
  2. import oracle.jdbc.OracleResultSet;
  3. import oracle.sql.CLOB;
  4. public class ClobTest {
  5. public static void main(String[] args)throws Exception{
  6.   Class.forName("oracle.jdbc.driver.OracleDriver");
  7.   Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");
  8.   conn.setAutoCommit(false);
  9.   
  10.   //下面往数据库里加入一行,其中value字段设置其值为empty_clob(),即设置为空值,以便接下来更改
  11.   PreparedStatement stmt = conn.prepareStatement("INSERT INTO clob_test VALUES (1,empty_clob())");
  12.   stmt.execute();
  13.   
  14.   //下面执行SELECT查询,以取得一个oracle.sql.CLOB对象
  15.   //然后调用CLOB对象的putChar()方法写入数据。  
  16.   stmt = conn.prepareStatement("SELECT value FROM clob_test FOR UPDATE");
  17.   ResultSet rs = stmt.executeQuery();
  18.   rs.next();
  19.   CLOB clob = ((OracleResultSet)rs).getCLOB(1);
  20.   clob.putChars(1,"this is a clob test!!!".toCharArray());
  21.   
  22.   //这里把上面得到的已经写入数据的clob对象上传到数据库
  23.   stmt = conn.prepareStatement("UPDATE clob_test SET value=?");
  24.   stmt.setClob(1,clob);
  25.   stmt.execute();
  26.   conn.commit();
  27.   
  28.   //检验结果。
  29.   stmt = conn.prepareStatement("SELECT * FROM clob_test");
  30.   rs = stmt.executeQuery();
  31.   rs.next();
  32.   Clob clob1 = rs.getClob("value");
  33.   String s = clob.getSubString((long)1,(int)clob.length()-1);
  34.   System.out.println(s);
  35. //收尾工作
  36.   rs.close();
  37.   stmt.close();
  38.   conn.close();
  39. }
  40. }
 

 

JAVA写入CLOB、BLOB对象总结:
Oracle的CLOB、BLOB等LOB对象在外部是无法直接通过INSERT来设置其值的,因此就需要类似上面的过程:
1)往clob字段里写入一个empty_clob(),即空的clob对象,相当于一个占位符。
2)通过SECELT刚刚抽入的clob对象,得到一个oracle.sql.CLOB对象,要注意的是在SELECT语句中要记得锁定行。即加上FOR UPDATE
3)通过oracle.sql.CLOB的一些写入数据的方法,将欲存入数据库lob字段的数据写入到LOB对象中
4)用UPDATE更新数据库的LOB字段,将刚刚的LOB对象传入到数据库
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值