[转]Java 存储和读取 oracle CLOB 类型字段

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.IOException; 
import java.io.Reader; 
import java.io.StringReader; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatemen
         关 键 词:   
package  oracle.clob; 

import  Java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.IOException; 
import java.io.Reader; 
import java.io.StringReader; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import oracle.jdbc.driver.OracleDriver; 
import oracle.sql.CLOB; 

public class ClobTest { 
String url = "jdbc:oracle:thin:@192.168.2.157:1521:orcl"; 
String user = "xj"; 
String pwd = "xj"; 
String text = "这是要插入到CLOB里面的数据"; 


private void clobImport() throws ClassNotFoundException, SQLException { 
// TODO Auto-generated method stub 
DriverManager.registerDriver(new OracleDriver()); 
Connection conn = DriverManager.getConnection(url, user, pwd);// 得到连接对象 
String sql = "insert into clob_test(id,str) values ('1',?)";// 要执行的SQL语句 

PreparedStatement stmt = conn.prepareStatement(sql);// 加载SQL语句 
// PreparedStatement支持SQL带有问号?,可以动态替换?的内容。 
Reader clobReader = new StringReader(text); // 将 text转成流形式 
stmt.setCharacterStream(1, clobReader, text.length());// 替换sql语句中的? 
int num = stmt.executeUpdate();// 执行SQL 
if (num > 0) { 
System.out.println("ok"); 
} else { 
System.out.println("NO"); 

stmt.close(); 
conn.close(); 


private void clobExport() throws ClassNotFoundException, SQLException, 
IOException { 
// TODO Auto-generated method stub 
CLOB clob = null; 
String sql = "select * from clob_test where id=1"; 
DriverManager.registerDriver(new OracleDriver()); 
Connection conn = DriverManager.getConnection(url, user, pwd);// 得到连接对象 
PreparedStatement stmt = conn.prepareStatement(sql); 
ResultSet rs = stmt.executeQuery(); 
String id = ""; 
String content = ""; 
if (rs.next()) { 
id = rs.getString("id");// 获得ID 
clob = (oracle.sql.CLOB) rs.getClob("str"); // 获得CLOB字段str 
// 注释: 用 rs.getString("str")无法得到 数据 ,返回的 是 NULL; 
content = ClobToString(clob); 

stmt.close(); 
conn.close(); 
// 输出结果 
System.out.println(id); 
System.out.println(content); 


// 将字CLOB转成STRING类型 
public String ClobToString(CLOB clob) throws SQLException, IOException { 

String reString = ""; 
Reader is = clob.getCharacterStream();// 得到流 
BufferedReader br = new BufferedReader(is); 
String s = br.readLine(); 
StringBuffer sb = new StringBuffer(); 
while (s != null) {// 执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING 
sb.append(s); 
s = br.readLine(); 

reString = sb.toString(); 
return reString; 



// TODO Auto-generated method stub 
public static void main(String[] args) throws IOException, 
ClassNotFoundException, SQLException { 
// TODO Auto-generated method stub 
ClobTest clobtest = new ClobTest(); 
// read file 
FileReader _frd = new FileReader(new File("D:\\DOS.txt")); 
BufferedReader _brd = new BufferedReader(_frd); 
String _rs = _brd.readLine(); 
StringBuffer _input = new StringBuffer(); 
while (_rs != null) { 
_input.append(_rs); 
_rs = _brd.readLine(); 

// System.out.println(_input.toString()); 
// 输入测试 
clobtest.text = _input.toString(); 
clobtest.clobImport(); 
// 输出测试 
// clobtest.clobExport(); 


}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11893231/viewspace-670908/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11893231/viewspace-670908/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值