php 读取oracle clob,oracle_解析jdbc处理oracle的clob字段的详解,import java.io.BufferedOutputStream;impo - phpStud...

解析jdbc处理oracle的clob字段的详解

import java.io.BufferedOutputStream;

import java.io.ByteArrayInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.Reader;

import java.sql.Clob;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

public class ClobUtil {

/**

*

* @param insertSQL 插入sql语句 有clob字段时,值必须设置成empty_clob()函数 例:insert into ba valus(1,empty_clob())

* @param updateSQL 带有修改的查询语句,并应增加条件判断.例:select * from BA where ba_id = '"+ba.getBA_id()+"' for update

* @param con 数据库链接

* @param bigString 要插入的clob值

* @param updateColumn 要插入的表字段名

* @return

* @throws SQLException

*/

public static Boolean clobInsert(String insertSQL,String updateSQL,Connection con,String bigString,String updateColumn ) throws SQLException{

// 结果集

ResultSet rs = null;

// 插入数据库的sql

String query = insertSQL;

// 设置不自动提交

con.setAutoCommit(false);

// 定义预处理

java.sql.PreparedStatement pstmt = con.prepareStatement( query);

// 执行插入语句

pstmt.executeUpdate();

//清空

pstmt = null;

// 执行更改

query = updateSQL;

//显示执行带有修改方式的select

pstmt = con.prepareStatement(query);

rs = pstmt.executeQuery();

// 采用流的方式处理结果集

if(rs.next())

{

// 得到指定的clob字段

oracle.sql.CLOB singnaturedateClob = (oracle.sql.CLOB)rs.getClob(updateColumn);

// 把clob字段放到输出流当中

BufferedOutputStream out = new BufferedOutputStream(singnaturedateClob.getAsciiOutputStream());

// 判断传入的数据是否为空

if(bigString!=null){

try{

// 把要保存的数据转换成输入流

InputStream  is = (InputStream)(new   ByteArrayInputStream(bigString.getBytes()));

copyStream( is, out );

out.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

rs.close();

con.commit();

return true;

}

/**

* 将输入流写入到输出流当中

* @param is 输入流

* @param os 输出流

* @throws IOException

*/

public static void copyStream( InputStream is, OutputStream os )

throws IOException

{

byte[] data             = new byte[4096];

int readed              = is.read(data);

while (readed != -1)

{

os.write(data,0,readed);

readed = is.read(data);

}

}

/**

* 通过Clob对象返回字符串

* @param c

* @return

*/

public static String getClobString(Clob c) {

try {

Reader reader=c.getCharacterStream();

if (reader == null) {

return null;

}

StringBuffer sb = new StringBuffer();

char[] charbuf = new char[4096];

for (int i = reader.read(charbuf); i > 0; i = reader.read(charbuf)) {

sb.append(charbuf, 0, i);

}

return sb.toString();

} catch (Exception e) {

return "";

}

}

}相关阅读:

深入浅析NodeJs并发异步的回调处理

Android编程判断网络是否可用及调用系统设置项的方法

javascript常用的正则表达式实例

Win10打开sli蓝屏死机的原因和解决方法

灵活掌握asp.net中gridview控件的多种使用方法(下)

html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等

在AngularJS中如何使用谷歌地图把当前位置显示出来

php使用filter过滤器验证邮箱 ipv6地址 url验证

关于动态生成dom绑定事件失效的原因及解决方法

C++中关于[]静态数组和new分配的动态数组的区别分析

讲解MySQL中<=>操作符的用法

JavaScript实现点击单元格改变背景色的方法

Java多线程编程之读写锁ReadWriteLock用法实例

win10系统可保留带宽该怎么设置?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值