Oracle中,Varchar2支持的最大字节数为4KB,所以对于某些长字符串的处理,我们需要用CLOB类型的字段,CLOB字段最大支持4GB。

还有其他几种类型:

blob:二进制,如果exe,zip
clob:单字节码,比如一般的文本文件.
nlob:多字节码,如UTF格式的文件.

以下就是对CLOG字段的操作方法,在我们的项目中帮助文档部分用到。

1、首先是写入

/* 以下表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; //更新SQL String sqlclob = "Select HCONTENT FROM PF_HELP_CONTENT Where HID=? FOR Update "; java.sql.PreparedStatement pstmt = conn.prepareStatement(sqlclob); //hid是varchar2类型的,所以用setString pstmt.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字段内容

/* 修改跟插入时基本一致,也是用for update来实现 */ //如果修改前的字段内容长度大于当前修改的长度时,末尾的部分内容仍然会存在 //所以在修改内容前,需要将PF_HELP_CONTENT内容置空 sql = " Update PF_HELP_CONTENT SET HCONTENT=empty_clob() Where HID=? "; try { rtn = DbUtils.executeUpdate(sql,hid); //以下操作跟添加时一样 Connection conn = DbUtils.getConnection(); conn.setAutoCommit(false); ResultSet rs = null; oracle.sql.CLOB clob = null; String sqlclob = "Select HCONTENT FROM PF_HELP_CONTENT Where HID=? FOR Update "; java.sql.PreparedStatement pstmt = conn.prepareStatement(sqlclob); pstmt.setString(1,hid); rs= pstmt.executeQuery(); if(rs.next()) { clob = (oracle.sql.CLOB)rs.getClob(1); } Writer write = clob.getCharacterOutputStream(); write.write(helpform.getHContent()); write.flush(); write.close(); rs.close(); conn.commit(); conn.close(); } catch(Exception ex) { //... }

3、取出CLOB字段的文本内容
/* 前面部分都一致 */ Connection conn = DbUtils.getConnection(); conn.setAutoCommit(false); ResultSet rs = null; oracle.sql.CLOB clob = null; String sqlclob = "Select HCONTENT FROM PF_HELP_CONTENT Where HID=? "; java.sql.PreparedStatement pstmt = conn.prepareStatement(sqlclob); pstmt.setString(1,hid); rs= pstmt.executeQuery(); if(rs.next()) { //rs.getClob(1)中参数1指的是HCONTENT字段索引,第一个字段从1开始而不是从0。 //也可以用字段名来取rs.getClob("HCONTENT") clob = (oracle.sql.CLOB)rs.getClob(1); } if(clob==null || clob.length()==0) { hcontent = ""; }else { //取CLOB字段内容为字符串 hcontent=clob.getSubString((long)1,(int)clob.length()); } rs.close(); conn.close(); request.setAttribute("HCONTENT",hcontent);

操作Oracle类型CLOB和BLOB相关推荐

  1. C#操作Oracle中大数据(Blob)

    之前在网上搜索C#操作Oracle中大数据的源代码,找到的文章基本都是一篇,都是没有提供引用库的,还是得自己写一个 - - 代码如下: 1 using System; 2 using System.D ...

  2. 使用JDBC操作基于Oracle的CLOB,BLOB字段类型

    转载至程式先锋技术维客[url]www.javabiz.cn[/url] 先来看看两种LOB类型的主要区别: CLOB 表示Character LOB (字符LOB)  它可以存储大量的字符数据. B ...

  3. Mybatis操作Oracle中的Clob和Blob字段

    文章目录 Mybatis操作Oracle中的Clob和Blob字段 [ 我测试用的Mybatis Plus ] A.数据准备 A-1. Oracle中创建测试的表结构:Byte_Array_Test, ...

  4. oracle的clob类型对应java,java对oracle9i中CLOB类型的操作

    这是一个完整的使用java对oracle9i的操作,其实,使用oracle10g后,操作将非常方便,但现在由于仍在使用oracle9i,所以不得不忍受这种痛苦.现将对oracle9i中CLOB类型的操 ...

  5. oracle是CLOB类型mybatis,Mybatis之Oracle增删查改示例(含Date、Clob数据类型操作)

    oracle表结构 create table T_USERS ( ID NUMBER not null, NAME VARCHAR2(30), SEX VARCHAR2(3), BIRS DATE, ...

  6. java mysql nclob_java语言操作Oracle数据库中的CLOB数据类型 (转)

    java语言操作Oracle数据库中的CLOB数据类型 (转)[@more@] 有关字段类型的相关信息可以查阅oracle技术网.下面摘抄一些有关blob.clob等类型的说明.又便于大家的了解. 字 ...

  7. clob类型字段最大存储长度_请教oracle的CLOB字段的最大长度?

    CLOB和BLOB都是4G,而LONG ,LONG raw是旧时代的oracle二进制和长文本表示,将来会被废弃.最长长度是2G. 单位是Byte 表中单个 LOB 字段 在 9i  版本中可保存 4 ...

  8. oracle CLOB与BLOB的区别及使用

      BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB则可以直接存储文字的.在ORACLE数据库中,像图片.文件.音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去; ...

  9. Mysql 查询blob数据很慢,关于oracle中clob字段查询慢的问题及解决方法

    关于oracle中clob字段查询慢的问题及解决方法 最近在用oracle的过程中用到了对blob字段模糊查询的问题,对oracle来说,我并不是高手,找了很多的资料终于能够查出来了. blob字段直 ...

最新文章

  1. ECMAScript6入门教程(一)
  2. 事务的控制(保存点)
  3. Laravel Session 遇到的坑
  4. 中国糖和甜味剂市场趋势报告、技术动态创新及市场预测
  5. 这个隐瞒了100多天的彩蛋,在圣诞节搞丢了一群开发者的饭碗
  6. 数据存储与访问(SharedPreferencesDemo)
  7. 数据结构 以数组的形式存储数据(c语言 干货满满)
  8. 扩展欧几里得算法的实现
  9. MATLAB实现QPSK
  10. C# 打印PDF文件
  11. android网络编程-socket基础
  12. Thematic与Continuous区别
  13. receptive field
  14. C++实现积分函数(第一章)
  15. python + 数学公式 + 图像 表白 LOVE YOU❤
  16. win10能上网显示无法连接服务器,电脑不能联网怎么办 Win10无法连接网络解决方法...
  17. [翻译]Linter简介-摘自维基百科
  18. cdh 简介_CDH的介绍和部署
  19. MATLAB r2014a 下载+安装+激活
  20. zbb20180913 java thread volatile与synchronized区别

热门文章

  1. 带alpha通道的图像合成(Python语言)
  2. python大学生生活信息交互平台的设计与实现毕业设计源码031315
  3. halcon脚本-条形码识别【附源码】
  4. 伦敦奥运引燃媒体大战 新媒体一枝独秀笑冠全场
  5. Android 性能优化之线程优化
  6. 华为服务器网口作用,设置网口模式(mode)
  7. 怎样学好编程(个人编程感受)!
  8. Python操作word手册,与打包生成word文件
  9. Mac 常用软件注册码
  10. layui upload 上传无反应