ITPub博客

首页 > IT职业 > IT生活 > JDBC 处理Oracle Clob字段

JDBC 处理Oracle Clob字段

IT生活 作者:小梁124 时间:2014-10-09 17:01:46 0 删除 编辑
  1. 必须保证在一个事务内处理:JDBC connection autocommit conn.setAutoCommit(false);

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

  3. 用select把空CLOB对象查出,并用for update子句来锁定这条记录:Select clob column with “for update” option like “select clob_field from clob_table where rowid=1 for update”;

  4. 将返回的CLOB字段对象由JDK的Clob转换成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. 用字符串填充该CLOB对象:
              BufferedWriter bw = new BufferedWriter(tmpclob.getCharacterOutputStream()); 
              bw.write(clobClValueArray.get(i).toString()); 
              bw.flush();
              bw.close();

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

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

  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());
        }

    (文章来源:http://www.mfqyw.com/)

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29870867/viewspace-1293155/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-09-11

  • 博文量
    71
  • 访问量
    214129