`
ranyut
  • 浏览: 259224 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Oracle中操作Clog/Blog

阅读更多
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字段转String类型

    ### ORACLE中CLOB字段转String类型 在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何...

    clog:命令日志。 或者船长的日志

    Usage: clog [OPTIONS] [TAG [VALUE]] Command Log. Or Captain's Log. Options: -h, --help show this help message and exit --export-json Export data into a list of JSON objects to STDOUT. --import-...

    CLog 日志类

    10. **性能优化**:由于日志操作在程序运行过程中频繁发生,因此CLog类需要尽可能减少对性能的影响,比如使用原子操作、避免不必要的字符串拷贝等。 了解并熟练使用CLog类对于开发者来说至关重要,它可以帮助我们更...

    CLog,C++编写的一个日志类,与大家交流下

    // 我会选择进行本地开发,然后再合到项目中去. // // 但是,每次功能点开发的时候,一般用的是printf直接打屏,但是项目中用的是写文件,所以移植 // // 的时候还需要进行不少改动. // // 于是,我就想自己写个log...

    Clog_01_08zip

    Clog通常是一个轻量级的日志框架,用于在软件开发中记录应用程序的运行时信息,便于调试和故障排查。在Silverlight环境中,它提供了一种在该平台上方便地输出日志的方法,因为Silverlight有其特殊的限制,比如不能...

    CLog一个用于记录日志的类.rar

    CLog是一个在编程中常用的日志记录类,尤其在Android开发中,它为开发者提供了方便、高效的日志输出功能。日志系统在软件开发中扮演着至关重要的角色,它可以帮助开发者在程序运行过程中追踪错误、调试代码以及了解...

    一个简单的CLog类

    在编程领域,日志记录是不可或缺的一部分,它用于跟踪程序运行状态、错误信息以及调试信息。...通过对CLog类的使用和分析,开发者可以了解到如何将日志系统整合到项目中,以及如何优化其性能和功能。

    Clog - Client Logging, WPF Edition database

    Clog - Client Logging, WPF Edition database Clog !

    Android代码-Android-Clog

    Clog > Clog is a simple-to-use yet powerful and customizable logging utility for Java. It is based on the Android Log class interface, but improves it with features like custom loggers with multiple ...

    clog windows日志清除源码

    标题 "clog windows日志清除源码" 涉及的是在Windows操作系统环境下,使用C++编程语言清除日志文件的源代码实现。这个程序可能用于管理系统的日志记录,确保磁盘空间的有效利用,或者在隐私和安全需求下清理不必要的...

    DebugLogController:object-c log打印控制器

    使用自定义手势在项目中开打log输出控制面板 运行项目,在屏幕上左右来回滑动2次以上,即可打开log输出控制面板 在log输出控制面板修改log输出配置后,点击filter即可生效 修改生效后的log输出配置会保持在沙盒中,...

    BT_FW_2021_0909_225238.clog

    BT_FW_2021_0909_225238.clog

    CLog类,优化之前的

    在Android开发中,CLog类通常指的是自定义的日志类,它是对系统默认的Log类的一个扩展或优化。系统默认的Log类提供了基本的日志输出功能,包括VERBOSE、DEBUG、INFO、WARN、ERROR五个级别,方便开发者在调试过程中...

    clog:CLOG-通用Lisp Omnificent GUI

    CLOG软件包启动与浏览器或其他Websocket客户端(通常是嵌入在本机模板应用程序中的浏览器)的连接。 状态:CLOG已完成,所有工作都在高阶任务上进行,例如网络上的完整桌面,数据库工具等。 请参见下文,了解正在...

    CLog:一款功能强大的Android日志异步输出工具,并可在IDE中控制台单击日志快速跳转到所在代码处

    一个Android日志辅助工具,可在IDE中控制台单击日志快速跳转到所在代码处,支持Android Studio 和Eclipse. 如图 用法 在你的项目根目录下的build.gradle文件添加下面一行代码 allprojects { repositories { ... ...

    Collective clog control

    在文档中提到的实验,研究者将大约30只工蚁放置在透明容器中,容器内含有由0.25毫米直径的玻璃颗粒与水混合的颗粒介质。这种混合物可以模拟土壤的湿度环境,其中土壤含水量定义为总水重量与总固体重量的比率,实验中...

    Common-Lisp 教程 示例游戏_Common-Lisp_代码_下载

    Common-Lisp“教程”的示例游戏参见 - https://github.com/rabbibotton/clog/blob/main/LEARN.md cd ~/common-lisp/ (or other asdf searchable location) git clone ...

    clog-开源

    Clog 提供了一套灵活且强大的日志解决方案,使得开发者能够方便地将不同级别的信息记录到系统日志或者标准错误流中,以适应各种应用场景。 Clog 的核心特性在于其丰富的日志级别管理。这个库支持多种级别的日志输出...

    标准Android Log的Clog记录器实现-Android开发

    Clog Clog是Java的易于使用但功能强大且可自定义的日志记录实用程序。 它基于Android Log类接口,但通过具有多个配置文件的自定义记录器和功能强大的String Clog零配置Kotlin多平台日志记录实用程序进行了改进,支持...

    将std :: clog重定向到测试框架输出

    在C++编程中,标准错误流`std::clog`是一个重要的组成部分,它通常用于输出诊断信息,如警告和错误消息。默认情况下,`std::clog`将这些信息发送到控制台。然而,在进行测试时,我们可能希望将这些错误信息重定向到...

Global site tag (gtag.js) - Google Analytics