字段类型:blob,clob,nclob
说明:三种大型对象(LOB),用来保存较大的图形文件或带格式的文本文件,如Miceosoft Word文档,以及音频、视频等非文本文件,最大长度是4GB。LOB有几种类型,取决于你使用的字节的类型,Oracle 8i实实在在地将这些数据存储在数据库内部保存。可以执行读取、存储、写入等特殊操作。
我们所操作的clobtest_table中属性是(字符型id,CLOB型picstr),目前我们假设一个大的字符对象str已经包含了我们需要存入picstr字段的数据。而且connection对象conn已经建立。以下的例子程序也因为不想占用太多的空间,所以对抛出异常没有写。大家参考一下api doc。就可以知道该抛出什么异常了,此处仅仅告诉大家如何去写。
代码:
(1)对数据库clob型执行插入操作
*************************************************
java.sql.PreparedStatement pstmt = null;
ResultSet rs = null;
String query = "";
conn.setAutoCommit(false); www@bitscn@com
query = "insert into clobtest_table(id,picstr) values(?,empty_clob())";
java.sql.PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setString(1,"001");
pstmt.executeUpdate();
pstmt = null
query = "select picstr from clobtest_table where id = '001' for update";
pstmt = con.prepareStatement(query)
rs= pstmt.executeQuery();
oracle.sql.CLOB clobtt = null;
if(rs.next()){
clobtt = (oracle.sql.CLOB)rs.getClob(1);
}
Writer wr = clobtt.getCharacterOutputStream();
wr.write(strtmp);
wr.flush();
wr.close();
rs.close();
con.commit();
(2)通过sql/plus查询是否已经成功插入数据库
*************************************************
PL/SQL的包DBMS_LOB来处理LOB数据。察看刚才的插入是否成功。使用DBMS_LOB包的getlength这个procedure来检测是否已经将str存入到picstr字段中了。如: bitsCN.nET*中国网管博客
SQL> select dbms_lob.getlength(picstr) from clobtest_table;
(3)对数据库clob型执行读取操作
*************************************************
读取相对插入就很简单了。基本步骤和一半的取数据库数据没有太大的差别。
String description = ""
query = "select picstr from clobtest_table where id = '001'";
pstmt = con.prepareStatement(query);
ResultSet result = pstmt.executeQuery();
if(result.next()){
oracle.jdbc.driver.OracleResultSet ors =
(oracle.jdbc.driver.OracleResultSet)result;
oracle.sql.CLOB clobtmp = (oracle.sql.CLOB) ors.getClob(1);
if(clobtmp==null || clobtmp.length()==0){
System.out.println("======CLOB对象为空 ");
description = "";
}else{
description=clobtmp.getSubString((long)1,(int)clobtmp.length()); BBS.bitsCN.com网管论坛
System.out.println("======字符串形式 "+description);
}
}
[/size]程序示例:
public void getTpxw() {
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
Query q = session
.createQuery("select infos.guId, infos.subject,infos.content from Infos as infos,Category as category "
+ "where (category.categoryName='视频介绍') and (infos.categoryId=category.guId) "
+ "order by infos.startDate desc ");
q.setFirstResult(0);
q.setMaxResults(1);
Iterator list = q.list().iterator();
Infos infosCustom = null;
if (list.hasNext()) {
Object[] it = (Object[]) list.next();
infosCustom = new Infos();
infosCustom.setGuId((String) it[0]);
String sub = (String) it[1];
// String content = (String) it[2];
infosCustom.setSubject(sub);
try {
SerializableClob bookCol = (SerializableClob) it[2];
Clob jbookColClob = bookCol.getWrappedClob();
CLOB oClob = (CLOB) jbookColClob;
Reader in = oClob.characterStreamValue();
char b[] = new char[8192];
StringBuffer str = new StringBuffer();
long totalSize = 0;
long fileLength = jbookColClob.length();
int ii = 0;
if (fileLength < 8192) {
ii = in.read(b, 0, (int) fileLength);
str.append(b);
} else
while (totalSize < fileLength) {
ii = in.read(b, 0, 8192);
totalSize += ii;
str.append(b);
}
in.close();
infosCustom.setBookColS(str.toString());
String content = str.toString();
if (content != null) {
if (content.length() <= Integer
.parseInt(getContentLength()))
infosCustom.setBookColS(content);
else
infosCustom.setBookColS(content.substring(0, Integer
.parseInt(getContentLength()))
+ "......");
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
infosCustom = new Infos();
infosCustom.setBookColS("没有相关内容");
}
setCurrentTpxw(infosCustom);
tx.commit();
HibernateUtil.closeSession();
}
[/size]
分享到:
相关推荐
通过上述示例,我们可以看到如何使用Java通过JDBC操作Oracle数据库中的CLOB类型数据。这些基本的操作是开发人员在日常工作中经常需要用到的功能之一。掌握这些技术对于实现高效、可靠的数据库应用程序至关重要。此外...
本文主要介绍了在Java中处理Oracle数据库CLOB类型的基本方法,包括CLOB的读写操作、中文编码问题的处理以及一些额外的注意事项。通过这些知识点的学习,可以更高效地完成与Oracle数据库的交互任务。
在Java中,读取Oracle数据库中的CLOB字段可以通过以下步骤实现: 1. **获取CLOB对象**: 首先,通过执行查询语句并从结果集中获取CLOB对象。示例代码中的`lookmail[6]`表示从查询结果的第7个元素(下标为6)获取...
Java 中操作 Oracle 的 CLOB 字段是一种常见的操作,在实际开发中,我们经常需要在 Oracle 数据库中存储和读取大型文本数据,这时就需要使用 CLOB(Character Large OBject)类型的字段来存储这些数据。下面我们将...
1. **CLOB数据类型**: `CLOB`数据类型用于存储大量的字符数据,最大可达到4GB。虽然主要用于存储文本,但在本例中,由于图片可以被转换为字符串形式(例如Base64编码),所以可以用来存储图片。将图片转换为Base64...
本文将以在JSP实际开发过程中遇到的具体程序为例,对使用Java语言操作Oracle数据库中大对象进行详细的说明。 在JSP实际开发过程中,如何使用Java程序操纵Oracle数据库中大对象是一个非常重要的问题。程序执行功能的...
Oracle数据库中的CLOB(Character Large Object)类型是用来存储大量字符数据的,比如长文本、XML文档等。在Java中,当我们需要通过JDBC(Java Database Connectivity)接口与Oracle数据库交互时,处理CLOB字段可能...
在 WebLogic 服务器环境中,当应用程序尝试从 Oracle 数据库中获取 CLOB 类型的数据时,可能会遇到数据类型的不匹配问题。这是因为 WebLogic 服务器为了更好地管理和操作数据库连接,会使用自己的包装类 `weblogic....
在Java编程中,Oracle的CLOB(Character Large Object)数据类型用于存储大量字符数据,如文本文件、HTML文档等。本教程将介绍如何使用Java来读取和写入Oracle数据库中的CLOB字段。 首先,我们需要引入相关的Java和...
在进行数据库迁移或数据交换时,需要将不同数据库管理系统之间的数据类型进行转换。在本文中,我们将讨论如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中。 Image 类型在 SQL Server 中的应用 ...
Oracle的Clob数据类型在数据库中用于存储大对象(Large Object),如长文本、XML文档等大量字符数据。在Hibernate框架中,Clob类型的字段处理是数据库操作中的一个关键环节,尤其是在处理大量文本数据时。以下是对...
可能包括了JSP、Servlet或Java后端代码,演示如何在Web应用中与Oracle数据库中的CLOB字段交互,如通过JDBC连接进行CRUD操作。 8. 注意事项: - 管理CLOB数据时要考虑性能,大量读写可能影响效率。 - 避免一次性...
在Oracle数据库中,CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型。CLOB能够容纳4GB的文本信息,适用于存储如文章、报告或者XML文档等大型文本数据。本文将详细介绍如何在Oracle数据库中读取...
在 Oracle 数据库中,CLOB 类型对应的数据库类型是 CLOB,在 MySQL 中对应的类型是 TEXT 或 LONGTEXT。 BLOB 类型用于存储二进制数据,可以存储图片、音乐、视频等文件。在 Oracle 数据库中,BLOB 类型对应的数据库...
这个过程通常涉及到Blob和Clob数据类型,它们是Java中的两种特殊对象,用于存储大对象(LOB)。Blob用于存储二进制数据,如图片、音频或视频文件,而Clob则用于存储字符数据,比如长文本。以下是如何使用Java处理...
在JAVA中,操作Oracle数据库中的BLOB和CLOB类型字段是一种常见的需求。然而,网络上关于JAVA对Oracle中BLOB、CLOB类型字段的操作说明往往不够全面、不够准确,甚至有的简直就是胡说八道。因此,本文旨在总结JAVA对...
Oracle数据库中的Clob类型用于存储大量的文本数据,如XML文档、长篇文章或者日志文件。Blob类型则用于存储非结构化的二进制数据,如图片、音频文件或PDF文档。由于这些数据量大,常规的SQL查询可能无法有效处理,...
4. **BLOB和CLOB数据类型处理**:在数据库操作中,经常需要处理大二进制对象(BLOB)和大字符对象(CLOB)。示例中,`ThreadUseExtends`类的构造函数接收BLOB和CLOB文件名作为参数,并在运行时读取这些文件的内容,...
在提供的`ConnUtils2.java`文件中,很可能包含了以上所述的Java数据库操作代码,例如建立JDBC连接、处理CLOB数据类型以及调用Oracle存储过程的方法。分析这个文件可以帮助我们更好地理解实际应用中的实现细节,包括...