`
yacole
  • 浏览: 241154 次
  • 性别: Icon_minigender_1
  • 来自: 浙江科技学院
社区版块
存档分类
最新评论

oracle之CLOB处理完整版

阅读更多

/**
*
*操作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...

    如何将DB2数据库中的大对象(BLOB,CLOB)数据类型复制到Oracle数据库中

    Oracle数据库同样支持BLOB和CLOB数据类型,但需要特殊配置来处理来自其他数据库的大对象数据。 3. **特殊配置策略**: - **联邦能力**:利用WII的联邦功能,先将DB2中的非BLOB字段复制到Oracle目标表中。 - **...

    spring+hibernate 解决大字段(clob)

    本文将详细介绍如何在Spring与Hibernate框架结合的情况下,有效地处理Oracle 10g数据库中的CLOB字段。 #### 一、环境配置 为了确保项目能够顺利运行,首先需要搭建好开发环境。本示例中使用的环境配置如下: 1. *...

    Oracle.ManagedDataAccess.dll.rar

    1. **完全托管**: 它是.NET Framework的一部分,无需安装额外的本机代码,如Oracle Client,简化了部署过程。 2. **高性能**: 通过优化的.NET接口和数据传输机制,提供了快速的数据访问速度。 3. **全面支持**: ...

    Java存取OracleBlob字段,图片存储,Blob和BLOB的问题,Clob,oracle.docx

    在处理 Oracle 数据库中的二进制大型对象(Binary Large Object,简称 Blob)时,开发者经常会遇到两个相似但不同的概念:`java.sql.Blob` 和 `oracle.sql.BLOB`。 1. **`java.sql.Blob`**: - 这是一个 Java 接口...

    oracle驱动jar包10.2.0

    8. **高级特性**:该版本支持存储过程调用、游标、BLOB/CLOB处理、分布式事务、XML处理等功能,满足复杂业务需求。 9. **安全特性**:Oracle JDBC驱动支持SSL加密、数据库连接的验证、角色切换等安全特性,确保数据...

    Oracle.ManagedDataAccess.zip

    此外,ODP.NET还支持处理复杂的Oracle特性,如PL/SQL、游标、BLOB/CLOB数据类型、触发器和存储过程。 总之,Oracle.ManagedDataAccess是C#与Oracle数据库集成的关键组件,通过这个驱动,开发者能够轻松地在.NET应用...

    SQL(oracle)教程(PPT版)

    Oracle SQL还提供了一些特有的数据类型,如CLOB(大对象,存储文本数据)和BLOB(大对象,存储二进制数据)。 2. **DML语句**:INSERT、UPDATE和DELETE用于插入、修改和删除数据。例如,`INSERT INTO 表名 (列名1, ...

    Oracle Sql基础(beginning oracle sql中文版)

    Oracle SQL支持多种数据类型,如CHAR、VARCHAR2(可变长度字符串)、NUMBER(数字)、DATE(日期时间)、CLOB(大对象,用于存储文本)、BLOB(大对象,用于存储二进制数据)等。选择正确的数据类型对于数据的存储和...

    DBD::Oracle

    9. **高级特性**:例如,它可以利用Oracle的LOB(大型对象)类型,处理BFILE、CLOB、BLOB等数据。同时,它也支持Oracle的分布式事务处理和数据库链接。 DBD::Oracle 的版本1.17可能包含了对Oracle数据库的一些优化...

    oracle11g 导到 10g

    【边检ORACLE11g操作说明记录.txt】:这个文件可能是关于在Oracle 11g环境中执行特定操作的详细指南,可能包括如何使用Data Pump进行数据导出的步骤、设置参数、处理权限等问题。 【11G导入到10G,不同表空间、...

    Oracle.ManagedDataAccess.rar

    4. **事务处理**:通过OracleTransaction对象,可以在Oracle数据库中进行事务处理,确保数据的一致性和完整性。 5. **存储过程**:OracleCommand对象可以用来调用Oracle数据库中的存储过程,通过设置CommandType为...

    oracle oci11g下载

    Instant Client 不需要完整的 Oracle 客户端安装,只需下载对应版本的压缩包解压即可使用,减少了系统资源的需求。 为了使用 Navicat for Oracle 通过 OCI 连接 Oracle 11g 数据库,你需要: 1. 下载并安装 ...

    OracleClient.zip

    如果需要更高级的特性,如高级安全功能、性能优化工具等,可能需要安装完整版的OracleClient。此外,确保所使用的OracleClient版本与目标数据库服务器版本兼容,否则可能会出现连接问题。 总的来说,OracleClient是...

    cx_Oracle-5.1.2.rar

    8. 处理Oracle特定类型:cx_Oracle库可以处理Oracle特有的数据类型,如BLOB、CLOB、NCLOB、DATE、TIMESTAMP等,以及Oracle的PL/SQL对象类型。 9. 异常处理:cx_Oracle库提供了各种异常类,如`cx_Oracle.Database...

    oracle迁移达梦常见问题汇总

    本文主要结合之前一次oracle迁移达梦的项目,将碰到的问题以及一系列踩过的坑列举出来供大家参考,数据库版本是达梦7。(本文中涉及到的部分对象名已用sch1,tab1等方式替换) 1、整体情况 迁移过程中失败任务数低于5%...

    MariaDB vs Oracle MySQL 情史

    - **参照完整性**: Oracle MySQL完全支持参照完整性,而MySQL只部分支持。 - **细粒度锁定**: 两者都支持行级锁定。 - **Unicode**: 均支持Unicode字符集。 - **接口**: Oracle MySQL提供API、GUI和SQL接口,而MySQL...

    odac oracle 连接控件

    10. **高级特性**: 包括PL/SQL支持、游标处理、BLOB和CLOB处理、触发器和存储过程调用、分布式事务处理、Oracle Advanced Queuing (AQ) 支持等。 通过ODAC,开发者可以轻松实现Oracle数据库的CRUD(创建、读取、...

    Oracle XML开发手册

    - Oracle支持XML流处理,允许在不完全加载整个XML文档到内存的情况下进行处理,这对于处理大型XML文档尤其有用。 9. **XML数据的加密和安全** - Oracle数据库提供了对XML数据的加密功能,确保敏感信息的安全。...

    oracle驱动包ojdbc14.zip

    6. 高级特性:ojdbc14还支持Oracle特定的功能,如PL/SQL块执行、游标、BLOB/CLOB处理、分布式事务等。 使用ojdbc14.jar时,开发者通常需要在项目的类路径中包含此jar文件,以便编译和运行时能够找到所需的类。同时...

Global site tag (gtag.js) - Google Analytics