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 clog读取 php,Oracle中操作Clog/Blog相关推荐

  1. oracle clog读取 php,oracle BLOG图片和CLOG base64码的转换

    --BASE64转图片 CREATE OR REPLACE FUNCTION DECODE_BASE64(P_CLOB_IN IN CLOB) RETURN BLOB IS V_BLOB BLOB; ...

  2. oracle 直接读取文件,oracle直接读取文本文件数据

    oracle利用使用utl_file包 create or replace procedure loadfiledata(p_path varchar2,p_filename varchar2) is ...

  3. oracle立即关闭数据库,Oracle数据库的起步和关闭

    Oracle数据库的启动和关闭 要启动和关闭数据库,必须要以具有Oracle 管理员权限的用户登陆,通常也就是以具有SYSDBA权限的用户登陆,启动一个数据库需要三个步骤: 1. 创建一个Oracle ...

  4. oracle总结大全(dos中操作)

    2019独角兽企业重金招聘Python工程师标准>>> C:\Adminstrator> sqlplus "/as sysdba" 查看是否连接到数据库SQ ...

  5. Python中操作MySQL/Oracle

    Python中操作MySQL/Oracle 一.Python操作数据库介绍 二.Python操作MySQL 2.1 PySQL模块 2.1.1 安装PyMySQL 2.2 基本使用 2.3 获取最新创 ...

  6. oracle触发器比较,Oracle使用触发器和mysql中使用触发器的比较

    一.触发器 1.触发器在数据库里以独立的对象存储, 2.触发器不需要调用,它由一个事件来触发运行 3.触发器不能接收参数 --触发器的应用 举个例子:校内网.开心网.facebook,当你发一个日志, ...

  7. oracle数据库读取工具,用Oracle导入导出工具实现Oracle数据库移植

    用Oracle导入导出工具实现Oracle数据库移植.很不错的方法,建议使用![@more@] 用Oracle导入导出工具实现Oracle数据库移植 Oracle数据库作为目前市场的主流数据库之一,许 ...

  8. oracle 批量读,Oracle批量读取数据和批量绑定

    通常我们获取游标数据是用 fetch some_cursor into var1, var2 的形式,自 Oracle 8i 起,Oracle 为我们提供了 fetch bulk collect 来批 ...

  9. oracle 在此 select 语句中缺少 into 子句,Go database/sql文档

    No.1 文档概要 在Golang中使用SQL或类似SQL的数据库的惯用方法是通过 database/sql 包操作.它为面向行的数据库提供了轻量级的接口.这篇文章是关于如何使用它,最常见的参考. 为 ...

最新文章

  1. linux ubuntu ping命令安装
  2. 查看进程命令+关闭进程
  3. 大牛逝世 = 新人上位 = 科学进步?新研究表明确实如此
  4. 图论 —— 网络流 —— 基本概念与建模技巧
  5. my batis plus 小数没有0_大黄蜂3号Plus,妈咪保贝的强劲对手!
  6. php mysql占位符代码,php – 使用命名占位符设置PDO / MySQL LIMIT
  7. Oracle触发器1-介绍
  8. 《结对-结对编程项目作业名称-结对项目总结》
  9. jquery ztree 设置勾选_JQuery Ztree 树插件配置与应用小结
  10. Symmetric Matrices
  11. 记录一下家里双路由实现wifi漫游功能
  12. 分析:公众号运营+引流,怎么从0到1运营
  13. johnny仔向您推荐的三个专业微信交流QQ群,欢迎加入!
  14. 事件分发机制流程图,Android免打包多渠道统计如何实现?Android核心知识点
  15. [SpringBoot](一)基本概念
  16. css背景图片高斯模糊_如何将网页CSS背景图高斯模糊且全屏显示
  17. 【8. Redis 的设计、实现】
  18. startup_stm32f10x_hd.S:1: Error: junk at end of line, first unrecognized character is `*‘
  19. 使用UltraISO制作U盘启动盘完整教程
  20. 解决:Clipping input data to the valid range for imshow with RGB data

热门文章

  1. iptables详解及一些常用规则
  2. 【Unity特效】LWRP/URP(Lightweight RP/Universal RP)和ShaderGraph下载及安装配置
  3. 30而立的程序员思想
  4. Java选择题(二十一)
  5. 通过Apache反向代理实现微信服务器80端口访问
  6. 西乡竖坐司法与止政互动机制
  7. 【转】机器学习@美团 ——吃喝玩乐中的算法问题
  8. unity抠人像原理_使用face++ 实现人像抠图
  9. 戴尔微型计算机进bois,dell进入bios的方法 搞定BIOS设置
  10. [转载]UNICODE,GBK,UTF-8区别