、在Oracle 10g中的新的,方便处理Clob 大字段的 JDBC Api
2、以及一个java 中处理大字段的一个示例程序
A、什么是Clob
LOBs (Large Ojbects) 用来存储没有结构的数据,比如大文本内容,图像文件,或是视频等等。
·Oracle里有3种LOB,BLOB(Binary LOB),CLOB(Character LOB),和NCLOB(National Character LOB).
·每一个LOB对象会存储成为一个系统文件,被称为BFILEs.
B、处理Clob
在10g之前Oracle 提供了从java.sql.CLOB扩展的oracle.sql.CLOB对象来处理。从10g以后Oracle的jdbc加入了新的API,OraclePreparedStatement增加了新的Api.OraclePreparedStatement.setStringForClob(),这个方法没有
OraclePreparedStatement.setString()这个方法的32765的长度限制。正如你想象的一样,OraclePreparedStatement.getString(),这个方法照旧,还是一样可以从CLOB字段取得完整的内容。
C、示例程序
方法一:标准的jdbc api
注意,前边提到的 setStringForClob 方法,在标准的 jdbc Api 里面是没有,这里需要把一个 SetBigStringTryClob 属性设置到数据库连接,这样setString()这个方法就会试图用CLOB方式来处setString.
a、准备数据库
CREATE TABLE clob_tab (clob_col CLOB);
b、创建数据库连接
import java.sql.Connection;
import java.sql.DriverManager;
import oracle.jdbc.OracleDriver;
import java.util.Properties;
..........
// 定义数据库连接变量
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String user = "scott";
String password = "tiger";
// 准备创建数据库连接的属性
Properties props = new Properties();
props.put("user", user );
props.put("password", password);
props.put("SetBigStringTryClob", "true");
//注意,这是有必要的
// 加载数据库驱动
DriverManager.registerDriver(new OracleDriver());
// 获得数据库连接
Connection conn = DriverManager.getConnection( this.url, this.props );
c、小试:
PreparedStatement pstmt = conn.prepareStatement(
"INSERT INTO clob_tab VALUES(?)");
//读入大文本
String str = this.readFile("bigFile.txt");
//用setString方法来把大文本写入Clob字段
//要确保在 SetBigStringTryClob 属性已经设置
pstmt.setString(1, str);
pstmt.executeUpdate();
方法二:非jdbc标准,Oracle api方式
import java.sql.*;
import java.io.*;
import java.util.*;
import oracle.jdbc.*;
import oracle.jdbc.pool.*;
..........
// sql
String sql = "INSERT INTO clob_tab VALUES(?)";
// 读入大文本(大于 32765 字节).
//readFile() 只是一个方法用来读取文本,返回字符串
String str = this.readFile("bigFile.txt");
// 新建 OraclePreparedStatement , 注意比较这里
opstmt = (OraclePreparedStatement)conn.prepareStatement(sql);
// 调用 setStringForClob 方法来写入Clob
opstmt.setStringForClob(1,str);
// 执行
opstmt.executeUpdate();
...........
D、用getString()读取Clob
ResultSet.getString()方法并没有 32765 字节的限制,以下就是读取CLOB字段的方法
.....
PreparedStatement pstmt = null;
ResultSet rset = null;
.......
// 执行Sql,返回结果集
String sqlCall = "SELECT clob_col FROM clob_tab";
pstmt= conn.prepareStatement(sqlCall);
rset = pstmt.executeQuery();
String clobVal = null;
// 读取CLOB字段
while (rset.next()) {
clobVal = rset.getString(1);
System.out.println("CLOB length: "+clobVal.length());
}
来源:http://developers.sun.com.cn/blog/nile/entry/200703094
分享到:
相关推荐
jsp结合html编辑器FCKeditor对Oracle CLOB大字段操作范例。
Mybatis 处理 CLOB、BLOB 类型数据
关于在oracle数据库中读取clob大字段问题
针对oracle中blob字段的操作,能批量快速的插入大字段,效率非常高
主要是整合了jdbc处理clob类型的增删改查方法,有需要的同学可以看下
oracle中字段存储类型为clob时,查询时需要做特殊处理,此时查询语句需要做更新
最近在用oracle的过程中用到了对blob字段模糊查询的问题,对oracle来说,我并不是高手,找了很多的资料终于能够查出来了。 blob字段直接用 select * from table_name where column like ‘%%'查找的时候是不能实现...
主要介绍了Java读取Oracle大字段数据(CLOB)的2种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
是我自己验证过的 用的是oracle10数据库 文件里面有具体的配置。
一个完整的工程,主要功能为:spring+hbernate对clob、blob字段的处理 包括:数据脚本、典型的SSH框架处理,以及spring、hibernate数据批量保存等...数据环境为:oracle 10G 开发:Mycelipse5.1 Spring1.2 Hibernate3.0;
只需要安装oracle client在本地,然后配置好tns,输入连接名,用户名,密码,数据表的名称,文件名数据列名以及blob数据列名,就可以批量导出ORACLE数据库BLOB字段生成图片
java对oracle大字段读取类,因项目需求要对大字段进行存取,在网上搜集了些,自己加工了些。用起来很方便!
kettle通过java代码将数据库blob 字段抽取到本地文件
首先,创建一个存储过程 get_clob: t_name:要查询的表名;f_name:要查询的字段名;u_id:表的主键,查询条件;l_pos:截取的开始位置; l_amount :截取长度; CREATE OR REPLACE PROCEDURE get_clob(t_name in ...
目前工具在Oracle 11g、Microsoft SQLServer 2012、MySQL 5.x、DB2 10.x、Sybase 15.x、PostgreSQL 9.x、Derby 10.x上通过了测试。 2、通过生成器创建BO类及DAO层代码 这是一个配合dbking的代码...