• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

在Java + Oracle环境下 对于clob类型的数据的插入

mysql 搞代码 4年前 (2022-01-09) 20次浏览 已收录 0个评论

SQL 类型 CLOB 在 JavaTM 编程语言中的映射关系。SQL CLOB 是内置类型,它将 Character Large Object 存储为数据库表的某一行中的

SQL 类型 CLOB 在 JavaTM 编程语言中的映射关系。SQL CLOB 是内置类型,它将 Character Large Object 存储为数据库表的某一行中的一个列值。默认情况下,驱动程序使用 SQL locator(CLOB) 实现 Clob 对象,这意味着 CLOB 对象包含一个指向 SQL CLOB 数据而不是数据本身的逻辑指针。Clob 对象在它被创建的事务处理期间有效。

CLOB 接口提供某些方法来获得 SQL CLOB (Character Large Object) 值长度、在客户端实现 CLOB 值以及搜索子字符串或 CLOB 值中的 CLOB 对象。接口 ResultSet、CallableStatement 和 PreparedStatement 中的方法(如 getClob 和 setClob)允许编程人员访问 SQL CLOB 值。此外,此接口还拥有更新 CLOB 值的方法。

Oracle中,Varchar2支持的最大字节数为4KB,所以对于某些长字符串的处理,我们需要用CLOB类型的字段,CLOB字段最大支持4GB。
还有其他几种类型:
blob:二进制,如果exe,zip
clob:单字节码,比如一般的文本文件.
nlob:多字节码,如UTF格式的文件.
以下就是对CLOG字段的操作方法,在我们的项目中帮助文档部分用到。
1、首先是写入

Java代码

  • /* 以下表PF_HELP_CONTENT中的HCONTENT字段时CLOB类型的 */
  • // 通过序列器生成帮助ID
  • //插入一条数据,注意CLOB字段,需要先插入一个空的clob类型 empty_clob(),然后再单独更新clob字段
  • try
  • {
  • rtn = DbUtils.executeUpdate(sql,hid);
  • Connection conn = DbUtils.getConnection();
  • java.sql.PreparedStatement pstmt = conn.prepareStatement(sqlclob);
  • rs= pstmt.executeQuery();
  • {
  • }
  • Writer write = clob.getCharacterOutputStream();
  • 本文来源gaodai#ma#com搞*!代#%^码$网*
  • write.write(helpform.getHContent());
  • write.flush();
  • write.close();
  • rs.close();
  • conn.commit();
  • conn.close();
  • }
  • catch(Exception ex)
  • {
  • Java代码

  • /* 以下表PF_HELP_CONTENT中的HCONTENT字段时CLOB类型的 */
  • // 通过序列器生成帮助ID
  • //插入一条数据,注意CLOB字段,需要先插入一个空的clob类型 empty_clob(),然后再单独更新clob字段
  • try
  • {
  • rtn = DbUtils.executeUpdate(sql,hid);
  • Connection conn = DbUtils.getConnection();
  • java.sql.PreparedStatement pstmt = conn.prepareStatement(sqlclob);
  • rs= pstmt.executeQuery();
  • {
  • }
  • Writer write = clob.getCharacterOutputStream();
  • write.write(helpform.getHContent());
  • write.flush();
  • write.close();
  • rs.close();
  • conn.commit();
  • conn.close();
  • }
  • catch(Exception ex)
  • {
  • /* 以下表PF_HELP_CONTENT中的HCONTENT字段时CLOB类型的 */// 通过序列器生成帮助ID Map map = Query.getMap(“Select TO_CHAR(SEQ_HID.nextval) HID FROM DUAL “); hid = String.valueOf(map.get(“HID”)); //插入一条数据,,注意CLOB字段,需要先插入一个空的clob类型 empty_clob(),然后再单独更新clob字段 sql = “Insert INTO PF_HELP_CONTENT(HID,HCONTENT) VALUES (?,empty_clob()) “; try{//执行插入rtn = DbUtils.executeUpdate(sql,hid);/* 插入成功后,修改HCONTENT字段内容 *///取得数据库连接Connection conn = DbUtils.getConnection();//手动提交conn.setAutoCommit(false);//定义ResultSet 和 Clob 变量ResultSet rs = null;oracle.sql.CLOB clob = null;//更新SQLString sqlclob = “Select HCONTENT FROM PF_HELP_CONTENT Where HID=? FOR Update “;java.sql.PreparedStatement pstmt = conn.prepareStatement(sqlclob);//hid是varchar2类型的,所以用setStringpstmt.setString(1,hid);//执行update语句rs= pstmt.executeQuery();if(rs.next()){//取得刚才的HCONTENT的内容,也就是刚才添加的empty_clob()clob = (oracle.sql.CLOB)rs.getClob(1);}//需要用clob.getCharacterOutputStream()流方式输出Writer write = clob.getCharacterOutputStream();//写入具体内容,helpform.getHContent() 存的是帮助的内容write.write(helpform.getHContent());write.flush();write.close();rs.close();//提交conn.commit();conn.close(); } catch(Exception ex) {//……… }


    2、修改CLOB字段内容


    搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
    转载请注明原文链接:在Java + Oracle环境下 对于clob类型的数据的插入
    喜欢 (0)
    [搞代码]
    分享 (0)
  • 发表我的评论
    取消评论

    表情 贴图 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址