Oracle 如何处理CLOB字段-阿里云开发者社区

开发者社区> 数据库> 正文

Oracle 如何处理CLOB字段

简介:
  1. 1.       必须保证在一个事务内处理:JDBC connection autocommit conn.setAutoCommit(false);

  2. 2.       插入记录用empty_clob()函数带入空CLOB字段:Insert into table with CLOB column as empty_clob();

  3. 3.       select把空CLOB对象查出,注意必须带for update子句来告知数据库接下来要修改该记录,否则SQL语句会返回错误告诉你没有for update子句:Select clob column with “for update” option like “select clob_field from clob_table where rowid=1 for update”;

  4. 4.       将返回的CLOB字段对象由JDKClob转换成Oracle 库的CLOB对象:Turn the return from java.sql.Clob to Oracle.sql.CLOB: 
    Clob clob = (Clob)rs.getClob("clob_field");
    oracle.sql.CLOB tmpclob = (oracle.sql.CLOB)clob;

  5. 5.  用字符串填充该CLOB对象:
  6.       BufferedWriter bw = new BufferedWriter(tmpclob.getCharacterOutputStream()); 
  7.       bw.write(clobClValueArray.get(i).toString()); 
  8.       bw.flush();
  9.       bw.close();

  1. 6.  用结构化语句对象PreparedStatement实现DML操作:
    PreparedStatement pstmt1 = conn.prepareStatement(“update clob_table set clob_field=? Where rowid=1”);
    pstmt1.setClob(1, tmpclob);
    pstmt1.execute();

  2. 7.  把事务提交实现CLOB字段操作。Commit the update: conn.commit();

  3. 8.读取CLOB内容也很简单: 
      PreparedStatement pstmt = conn.prepareStatement("select  clob_field from clob_table   where rowid=1");
       ResultSet rs = pstmt.executeQuery();
       Clob clob = (Clob)rs.getClob("clob_field");
       String str; 

        if(null != clob){

             str = clob.getSubString((long)1, clob.length());

    }

本文转自 dannyy1026 51CTO博客,原文链接:
http://blog.51cto.com/dannyyuan/550861

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章