J2EE操作Oracle的clob类型字段
来源:互联网 发布:sql中like的用法 编辑:程序博客网 时间:2024/05/02 01:42
关键字: java
Oracle中,Varchar2支持的最大字节数为4KB,所以对于某些长字符串的处理,我们需要用CLOB类型的字段,CLOB字段最大支持4GB。
还有其他几种类型:
blob:二进制,如果exe,zip
clob:单字节码,比如一般的文本文件.
nlob:多字节码,如UTF格式的文件.
以下就是对CLOG字段的操作方法,在我们的项目中帮助文档部分用到。
1、首先是写入
2、修改CLOB字段内容
3、取出CLOB字段的文本内容
还有其他几种类型:
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);
- J2EE操作Oracle的clob类型字段
- J2EE操作Oracle的clob类型字段
- J2EE操作Oracle的clob类型字段
- J2EE操作Oracle的clob类型字段
- J2EE操作Oracle的clob类型字段
- Oracle中对clob类型字段的操作
- 使用JDBC操作基于Oracle的CLOB,BLOB字段类型
- oracle使用java操作clob类型的字段
- Oracle查询CLOB字段类型的内容
- ORACLE 操作 CLOB 字段
- ORACLE 操作 CLOB 字段
- ORACLE 操作 CLOB 字段
- ORACLE 操作 CLOB 字段
- oracle中对clob字段的操作
- java操作oracle 的clob字段
- 通过JDBC 操作 ORACLE BLOB,CLOB字段类型
- (转)通过JDBC 操作 ORACLE BLOB,CLOB字段类型
- hibernate在SSH框架操作ORACLE Clob字段类型的读写改
- object is not an instance of declaring class 反射异常
- 标签/TabActivity 深度研究
- QT下的几种透明效果
- C#开发编码规范
- C#操作XML的完整例子——XmlDocument篇
- J2EE操作Oracle的clob类型字段
- 利用HttpSessionListener实现网站在线人数统计功能
- (转)quest3D项目管理
- 如何增加系统配置参数
- Eclipse快捷键大全(转载)
- AD/DC服务
- 字符数组的使用-读入一文本行,并把最长的文本行打印出来。
- struts2中的依赖注入和控制翻转(DI和IoC)
- DLL之工作原理