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

oracle之CLOB处理完整版(Inber摘抄学习用)

阅读更多

oracle之CLOB处理完整版
JSP教程-数据库相关
/**
*
*操作oracle数据库的CLOB字段,包括读和写
*作者:令少爷
* */

package com.nes.common.sql.lob;

import java.sql.*;
import java.io.*;
import oracle.jdbc.OracleResultSet;
import oracle.sql.*;

public class JClob {

String tableName = null; //表名
String primaryKey = null; //表的主键名
String primaryValue = null; //表的主键值
String fieldName = null; //表的CLOB字段名
String clobValue = null; //表的CLOB字段值

Connection conn = null; //与oracle的连接

/**
*
*用于测试用
*
* */
public static void main(String[] args) {
try {
JClob jc = new JClob(getConnection(),"aa","a","aaaa","c","ccc");
jc.write();
jc.read();
}
catch (Exception e) {
System.out.println(e);
e.printStackTrace();
}
}


/**
*
*构造方法
*
* */
public JClob(Connection connection,String tableName,String primaryKey,String primaryValue,String fieldName,String clobValue) {
this.conn = connection;
this.tableName = tableName;
this.primaryKey = primaryKey;
this.primaryValue = primaryValue;
this.fieldName = fieldName;
this.clobValue = clobValue;
}

/**
*
*构造方法,但不必传clobValue值
*一般构造出的实例用来读Clob字段
*
* */
public JClob(Connection connection,String tableName,String primaryKey,String primaryValue,String fieldName) {
this.conn = connection;
this.tableName = tableName;
this.primaryKey = primaryKey;
this.primaryValue = primaryValue;
this.fieldName = fieldName;
}

/**
*
*用于测试
*
* */
public static Connection getConnection() throws SQLException,ClassNotFoundException {
Class.forName("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.18:1521:portal","portal","portal");
return conn;
}

/**
*
*读数据库中clob字段的内容
*@return clob字段值
*
* */
public String read() throws SQLException,IOException {
String rtn = null;
try {
String sql = "select " + fieldName + " from " + tableName + " where " + primaryKey + "=" + primaryValue;
//Connection conn = getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql);
//int v = Integer.parseInt(primaryValue);
//pstmt.setInt(1,v);
ResultSet rs = pstmt.executeQuery();

java.sql.Clob clob = null;
if (rs.next()) {
clob = rs.getCLOB(fieldName);
//clob = ((OracleResultSet)rs).getCLOB(fieldName);
//clob = ((org.apache.commons.dbcp.DelegatingResultSet)rs).getClob(fieldName);
//Reader in = clob.getCharacterStream();
InputStream input = clob.getAsciiStream();
int len = (int)clob.length();
byte[] by = new byte[len];
int i ;//= input.read(by,0,len);
while(-1 != (i = input.read(by, 0, by.length))) {
input.read(by, 0, i);
}
rtn = new String(by);
}
}
catch (SQLException e){
throw e;
}
catch (Exception ee) {
ee.printStackTrace();
}

return rtn;
}

/**
*
*葱数据库中clob字段的内容
*
* */
public void write() throws SQLException,IOException {
String sql = "update " + tableName + " set " + fieldName + "=empty_clob() where " + primaryKey + "=" + primaryValue;
//Connection conn = getConnection();
conn.setAutoCommit(false);

PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.executeUpdate();

sql = "select " + fieldName + " from " + tableName + " where " + primaryKey + "=" + primaryValue;
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);

java.sql.Clob clob ;
if (rs.next()) {
clob = ((oracle.jdbc.OracleResultSet)rs).getClob(fieldName);
//clob = ((org.apache.commons.dbcp.DelegatingResultSet)rs).getClob(fieldName);
oracle.sql.CLOB my_clob = (oracle.sql.CLOB)clob;
OutputStream writer = my_clob.getAsciiOutputStream();
byte[] contentStr = this.getContent().getBytes();
writer.write(contentStr);
writer.flush();
writer.close();
}

conn.commit();
rs.close();
st.close();
pstmt.close();
conn.setAutoCommit(true);
}

/**
*
*
* */
private String getContent() {
return this.clobValue;
}

/**
*
*
* */
public void setClobValue(String clobValue) {
this.clobValue = clobValue;
}
}

分享到:
评论

相关推荐

    Oracle导出Clob,Blob工具版本2

    Oracle数据库在存储大对象(BLOB和CLOB)时提供了强大的功能,但处理这些类型的数据进行导入导出可能会带来挑战。"Oracle导出Clob,Blob工具版本2" 是一个专为解决这个问题而设计的应用程序,它改进了对CLOB...

    ORACLE中CLOB字段转String类型

    在Oracle数据库中,将CLOB字段转换为字符串类型是常见需求之一。通过使用`DBMS_LOB`包、内置函数如`SUBSTR`以及`TO_CHAR`,可以有效地实现这一目标。此外,还需注意性能优化措施,例如分段读取和合理设计查询逻辑,...

    Oracle导出Clob,Blob工具

    Oracle数据库在处理大对象(LOB)类型,如Clob(Character Large Object)和Blob(Binary Large Object)时,有时需要专门的工具来进行高效且安全的数据导出。这些字段通常存储大量的文本或二进制数据,比如长篇文档...

    jdbc读写Oracle的CLOB字段

    JDBC读写Oracle的CLOB字段

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

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

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

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

    Oracle中CLOB类型文字处理代码

    本文将深入探讨Oracle中的CLOB类型文字处理,以及如何在实际操作中进行操作。 1. CLOB数据类型介绍: - CLOB类型是用来存储最大容量为4GB的单个字符数据,可以是Unicode字符集,支持多种语言。 - 它不同于VARCHAR...

    向Oracle数据库插入Clob大段文本解决方法

    在处理Oracle数据库中的大文本数据时,CLOB(Character Large Object)类型被广泛应用于存储大量字符数据,如文章、报告或任何大型文本信息。本文将详细介绍如何有效地向Oracle数据库插入Clob大段文本,以及在操作...

    java中操作oracle的CLOB字段精解

    Java 中操作 Oracle 的 CLOB 字段精解 Java 中操作 Oracle 的 CLOB 字段是...在 Java 中操作 Oracle 的 CLOB 字段需要使用 Oracle 的 JDBC 驱动程序,了解 CLOB 字段的类型和特点,并掌握插入、修改和处理异常的技术。

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

    在数据库管理领域,MySQL和Oracle都是广泛使用的数据库系统,它们在处理特定数据类型时有各自的特点和策略。本文将深入探讨这两个数据库系统如何处理`CLOB`(Character Large Object)和`BLOB`(Binary Large Object...

    hibernate存取oracle的clob

    hibernate存取oracle的clob

    java存储oracle中的clob类型

    本文主要介绍了在Java中处理Oracle数据库CLOB类型的基本方法,包括CLOB的读写操作、中文编码问题的处理以及一些额外的注意事项。通过这些知识点的学习,可以更高效地完成与Oracle数据库的交互任务。

    oracle Blob Clob 大数处理 代码

    在Oracle中,Blob和Clob的处理涉及到许多关键知识点,包括创建、读取、更新和删除大对象数据。以下是一些相关的详细说明: 1. **创建LOB字段**: 在创建表时,可以添加Blob或Clob字段来存储大对象。例如: ```sql...

    hibernate动态映射表处理oracle的clob类型

    在Oracle 10g中,CLOB数据类型的处理有时会遇到一些挑战,尤其是在与ORM框架结合使用时。以下将详细介绍相关知识点: 1. **CLOB类型**:CLOB是一种非二进制大对象,用于存储大量字符数据,最大可达到4GB。Oracle 10...

    关于Oracle的 Clob数据类型在Hibernate中的应用小结

    Oracle的Clob数据类型在数据库中用于存储大对象(Large Object),如长文本、XML文档等大量字符数据。在Hibernate框架中,Clob类型的字段处理是数据库操作中的一个关键环节,尤其是在处理大量文本数据时。以下是对...

    weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB 类型转换解决办法

    在使用 WebLogic 服务器进行应用程序开发时,尤其是在处理 Oracle 数据库中的 CLOB 类型数据时,开发者可能会遇到类型转换的问题。本文将详细介绍如何通过反射机制来解决 WebLogic 环境下 Oracle CLOB 类型转换成 `...

    java调用oracle含有clob参数的存储过程.doc

    "Java 调用 Oracle 含有 CLOB 参数的存储过程" Java 调用 Oracle 含有 CLOB 参数的存储过程是一种常用的数据库操作方式,下面是该过程的详细介绍: 1. 连接数据库 在 Java 中连接 Oracle 数据库需要使用 Oracle ...

    图片存入Oracle中,用clob和blob两种方式

    在数据库管理中,存储非结构化数据如图片、音频或视频文件时,通常会使用`CLOB`(Character Large Object)和`BLOB`(Binary Large Object)这两种数据类型。Oracle数据库系统支持这两种数据类型,用于存储大量文本...

    oracle替换wm_concat varchar处理为clob处理的方法

    是处理wm_concat中以varchar处理合并列字段过小。 clob 可以加大处理。 oracle 9I oracle 10G 必备

Global site tag (gtag.js) - Google Analytics