oracle JDBC 保存BLOB CLOB字段

本文详细介绍了如何在数据库中创建BLOB和CLOB数据类型,包括使用Connection对象和对象实例创建临时BLOB/CLOB的方法,以及针对不同类型数据(如byte数组、InputStream、File)的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//ps.setClob(index, createClob(con,ojb)

/**

* 创建BLOB

* @param conn 数据库链接

* @param o 数据对象

* @return BLOB

* @throws Exception

*/

@SuppressWarnings("deprecation")

private BLOB createBlob(Connection conn,Object o) throws Exception{

BLOB blob=BLOB.createTemporary(conn, true, CLOB.DURATION_SESSION);

if(o instanceof byte[]){

blob.putBytes(1, (byte[])o);

}else if(o instanceof InputStream){

blob.open(BLOB.MODE_READWRITE);

OracleBlobOutputStream os=(OracleBlobOutputStream) blob.getBinaryOutputStream();

InputStream is=(InputStream)o;

       byte[] b = new byte[1024];

       int read=0;

       while ((read=is.read(b))!=-1) {

       os.write(b,0,read);

       }

os.flush();

os.close();

os=null;

is.close();

is=null;

}else if(o instanceof File){

blob.open(BLOB.MODE_READWRITE);

OracleBlobOutputStream os=(OracleBlobOutputStream) blob.getBinaryOutputStream();

File file=(File)o;

InputStream is=new FileInputStream(file);

       byte[] b = new byte[1024];

       int read=0;

       while ((read=is.read(b))!=-1) {

       os.write(b,0,read);

       }

os.flush();

os.close();

os=null;

is.close();

is=null;

}else{//数据类型不符

throw new Exception("Exception BLOB Object type not!");

}

return blob;

}

/**

* 创建CLOB

* @param conn 数据库链接

* @param o 数据对象

* @return CLOB

* @throws Exception

*/

@SuppressWarnings("deprecation")

private CLOB createClob(Connection conn,Object o) throws Exception{

CLOB clob=CLOB.createTemporary(conn, true, CLOB.DURATION_SESSION);

if(o instanceof String){

clob.putString(1, (String)o);

}else if(o instanceof char[]){

clob.putChars(1, (char[])o);

}else if(o instanceof Reader){

clob.open(CLOB.MODE_READWRITE);

oracle.jdbc.driver.OracleClobWriter writer=(OracleClobWriter) clob.getCharacterOutputStream();

Reader reader=(Reader)o;

       char[] c = new char[1024];

       int read=0;

       while ((read=reader.read(c))!=-1) {

       writer.write(c,0,read);

       }

writer.flush();

writer.close();

}else{//数据类型不符

throw new Exception("Exception CLOB Object type not!");

}

return clob;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值