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(Character Large Object)类型字段用于存储大量的文本数据,如XML文档、长篇文章等。由于其特殊性,处理CLOB类型的字段时可能会遇到性能问题,特别是当涉及索引时。本话题将围绕如何针对...
Java 中操作 Oracle 的 CLOB 字段是一种常见的操作,在实际开发中,我们经常需要在 Oracle 数据库中存储和读取大型文本数据,这时就需要使用 CLOB(Character Large OBject)类型的字段来存储这些数据。下面我们将...
### ORACLE中CLOB字段转String类型 在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何...
本文将详细介绍如何使用Java对Oracle中的CLOB类型字段进行操作。 #### CLOB简介 CLOB是Oracle数据库用于存储大型文本数据的一种数据类型,它可以存储最大为4GB的字符数据。在处理CLOB数据时,通常会涉及到以下几种...
JDBC读写Oracle的CLOB字段
SQL Server 中 Image 类型数据导出到 Oracle 的 CLOB 字段中 在进行数据库迁移或数据交换时,需要将不同数据库管理系统之间的数据类型进行转换。在本文中,我们将讨论如何将 SQL Server 中的 Image 类型数据导出到 ...
在处理Oracle数据库时,经常会遇到需要读取CLOB(Character Large Object)类型字段的情况。CLOB主要用于存储大量的文本数据,如文章、文档等内容。由于CLOB类型的数据量可能非常大,因此在读取时需要特别注意性能和...
Oracle 数据库中,CLOB 行字段是一种常用的数据类型,用于存储大文本数据。然而,在 Oracle8i 版本之前,对大字段 CLOB 仍然不支持在 where 子句直接的 Like 操作。这使得开发者无法直接对 CLOB 字段中的内容进行 ...
本主题主要探讨如何使用JDBC有效地操作Oracle数据库中的CLOB类型字段,包括插入(Insert)、删除(Delete)、更新(Update)和查询(Select)等操作。 首先,我们需要理解CLOB的基本概念。CLOB是一种数据库对象,...
本篇将详细讲解如何在ASP.NET中操作Oracle的CLOB字段。 首先,要进行Oracle数据库操作,我们需要安装Oracle的数据提供程序,如ODP.NET(Oracle Data Provider for .NET)。这个驱动程序允许ASP.NET应用程序与Oracle...
CLOB(Character Large OBject)是Oracle数据库中的一个数据类型,用于存储大量的字符数据。CLOB字段可以存储大量的文本数据,如文章、报表、图像等。 dblink_clob字段异常的原因 当我们使用DBLink连接远程数据库...
在Oracle数据库中,CLOB(Character Large Object)字段类型用于存储大量的文本数据,如XML文档、长篇文章或者大量字符数据。然而,当你尝试向CLOB字段插入数据时,如果超过了Oracle规定的最大限制,就会遇到“ORA-...
Oracle数据库在处理大数据字段时,提供了CLOB(Character Large Object)类型,用于存储大量文本数据。CLOB类型是LOB家族的一员,与BLOB(Binary Large Object)不同,它专门用于存储字符集相关的数据,比如文档、...
ibatis 读取oracle clob类型
在Java编程中,Oracle的CLOB...以上就是Java操作Oracle CLOB字段的基本步骤。通过这些步骤,你可以实现对CLOB字段的插入、读取和更新操作。在实际应用中,可能还需要考虑异常处理、事务管理和性能优化等方面的问题。
本文将深入探讨这两个数据库系统如何处理`CLOB`(Character Large Object)和`BLOB`(Binary Large Object)字段,这两种字段类型主要用于存储大量文本或二进制数据。 `CLOB`用于存储非结构化的字符数据,如长篇...
在J2EE开发中,处理大数据对象(如大文本或二进制数据)时,Oracle数据库的CLOB...通过以上配置和操作,你可以在Spring和Hibernate的环境中顺利地对Oracle数据库的CLOB字段进行读写,满足J2EE应用中的大数据存储需求。
另外,Oracle还提供了全文索引(Full-Text Indexing)功能,通过CTXSYS.CONTEXT类型的索引,可以加速对CLOB字段的文本搜索。创建全文索引的SQL语句如下: ```sql create index search_id on table_name (column) ...