您的位置:首页 > 数据库

内置对象Clob对从数据库表中取的字符大对象CLOB类型的列值进行读取操作

2015-06-11 23:29 381 查看
package readclobDemo.bao;

import java.io.IOException;
import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import jdbcutil.bao.JdbcUtil;

public class ReadClobDemo {

/**
CLOB用于存储大量的字符数据,程序的主要功能为从数据库中通过jdbc获取CLOB字段,将其转化为IO进行读取,
所以首先通过查询语句得到CLOB字段,再将CLOB从结果集中获得并将其转化为oracle.sql.CLOB类型进行写入操作
* @throws IOException
*/

/* CREATE TABLE "HR"."CLOB_1"
(    "ID" NUMBER(*,0),
"CLOB_TEXT" CLOB
) SEGMENT CREATION IMMEDIATE *///在oracle创建表CLOB_1;

public static void readclob(int id) throws IOException{

Connection conn=null;
PreparedStatement patst=null;
ResultSet rs=null;
String sql="select * from CLOB_1 where id=?";
try {
conn=JdbcUtil.getConnection();   //通过获得数据连接池JdbcUtil中分配的数据库连接接口进行数据库的连接
patst=conn.prepareStatement(sql);
patst.setInt(1, id);
rs=patst.executeQuery();    //返回结果集;

if(rs.next()){

Clob clob=rs.getClob("CLOB_TEXT");  //Clob对象在它被创建的事务处理期间有效
Reader rd=clob.getCharacterStream();

char[] chars = new char[1024];   //定义一个字符数组

int length=0;

System.out.print("CLOB_TEXT:");
//通过Io流读取返回int字节值转化为char类型直到没有字节,返回-1
while((length=rd.read(chars)) != -1) {

if(length==1024){

System.out.print(chars);

}else{

System.out.print(new String(chars,0,length));//不够长度1024的字符数组只显示有值的字符串

}

}

}

} catch (SQLException e1) {
e1.printStackTrace();
} finally{
JdbcUtil.free(rs, patst, conn);//调用JdbcUtil定义的free方法关闭各接口;
}

}
public static void main(String[] args) throws IOException {

readclob(1);

}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: