`
rbible
  • 浏览: 52898 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

J2EE操作Oracle的clob类型字段

阅读更多
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 类型字段重建索引SQL及修复用户表空间索引空间的存储过程

    在Oracle数据库中,CLOB(Character Large Object)类型字段用于存储大量的文本数据,如XML文档、长篇文章等。由于其特殊性,处理CLOB类型的字段时可能会遇到性能问题,特别是当涉及索引时。本话题将围绕如何针对...

    java中操作oracle的CLOB字段精解

    Java 中操作 Oracle 的 CLOB 字段是一种常见的操作,在实际开发中,我们经常需要在 Oracle 数据库中存储和读取大型文本数据,这时就需要使用 CLOB(Character Large OBject)类型的字段来存储这些数据。下面我们将...

    ORACLE中CLOB字段转String类型

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

    运用Java如何存取Oracle中的CLOB类型字段

    本文将详细介绍如何使用Java对Oracle中的CLOB类型字段进行操作。 #### CLOB简介 CLOB是Oracle数据库用于存储大型文本数据的一种数据类型,它可以存储最大为4GB的字符数据。在处理CLOB数据时,通常会涉及到以下几种...

    jdbc读写Oracle的CLOB字段

    JDBC读写Oracle的CLOB字段

    sql server中的image类型的数据导出到oracle的clob字段中

    SQL Server 中 Image 类型数据导出到 Oracle 的 CLOB 字段中 在进行数据库迁移或数据交换时,需要将不同数据库管理系统之间的数据类型进行转换。在本文中,我们将讨论如何将 SQL Server 中的 Image 类型数据导出到 ...

    读取oracle数据库中clob字段的值

    在处理Oracle数据库时,经常会遇到需要读取CLOB(Character Large Object)类型字段的情况。CLOB主要用于存储大量的文本数据,如文章、文档等内容。由于CLOB类型的数据量可能非常大,因此在读取时需要特别注意性能和...

    Oracle如何对CLOB行字段来执行全文检索

    Oracle 数据库中,CLOB 行字段是一种常用的数据类型,用于存储大文本数据。然而,在 Oracle8i 版本之前,对大字段 CLOB 仍然不支持在 where 子句直接的 Like 操作。这使得开发者无法直接对 CLOB 字段中的内容进行 ...

    jdbc 处理clob类型字段

    本主题主要探讨如何使用JDBC有效地操作Oracle数据库中的CLOB类型字段,包括插入(Insert)、删除(Delete)、更新(Update)和查询(Select)等操作。 首先,我们需要理解CLOB的基本概念。CLOB是一种数据库对象,...

    asp.net操作oracle clob字段demo

    本篇将详细讲解如何在ASP.NET中操作Oracle的CLOB字段。 首先,要进行Oracle数据库操作,我们需要安装Oracle的数据提供程序,如ODP.NET(Oracle Data Provider for .NET)。这个驱动程序允许ASP.NET应用程序与Oracle...

    dblink_clob字段异常解决方案

    CLOB(Character Large OBject)是Oracle数据库中的一个数据类型,用于存储大量的字符数据。CLOB字段可以存储大量的文本数据,如文章、报表、图像等。 dblink_clob字段异常的原因 当我们使用DBLink连接远程数据库...

    CLOB 字段类型报错 ORA-01704: 文字字符串过长的解决

    在Oracle数据库中,CLOB(Character Large Object)字段类型用于存储大量的文本数据,如XML文档、长篇文章或者大量字符数据。然而,当你尝试向CLOB字段插入数据时,如果超过了Oracle规定的最大限制,就会遇到“ORA-...

    Oracle的CLOB大数据字段类型操作方法

    Oracle数据库在处理大数据字段时,提供了CLOB(Character Large Object)类型,用于存储大量文本数据。CLOB类型是LOB家族的一员,与BLOB(Binary Large Object)不同,它专门用于存储字符集相关的数据,比如文档、...

    ibatis 读取oracle clob类型

    ibatis 读取oracle clob类型

    java读写oracle clob字段

    在Java编程中,Oracle的CLOB...以上就是Java操作Oracle CLOB字段的基本步骤。通过这些步骤,你可以实现对CLOB字段的插入、读取和更新操作。在实际应用中,可能还需要考虑异常处理、事务管理和性能优化等方面的问题。

    mysql和Oracle在对clob和blob字段的处理

    本文将深入探讨这两个数据库系统如何处理`CLOB`(Character Large Object)和`BLOB`(Binary Large Object)字段,这两种字段类型主要用于存储大量文本或二进制数据。 `CLOB`用于存储非结构化的字符数据,如长篇...

    spring+hibernate操作oracle的clob字段

    在J2EE开发中,处理大数据对象(如大文本或二进制数据)时,Oracle数据库的CLOB...通过以上配置和操作,你可以在Spring和Hibernate的环境中顺利地对Oracle数据库的CLOB字段进行读写,满足J2EE应用中的大数据存储需求。

    关于oracle中clob字段查询慢的问题及解决方法

    另外,Oracle还提供了全文索引(Full-Text Indexing)功能,通过CTXSYS.CONTEXT类型的索引,可以加速对CLOB字段的文本搜索。创建全文索引的SQL语句如下: ```sql create index search_id on table_name (column) ...

Global site tag (gtag.js) - Google Analytics