Java大对象lob_JavaEE JDBC 读写LOB大对象

JDBC 读写LOB大对象

@author ixenos

LOB

除了数字、字符串和日期之外,许多数据库还可以存储大对象,例如图片或其他数据,

在SQL中,二进制大对象称为BLOB,字符型大对象称为CLOB

读取LOB流程

i.     执行SELECT语句

ii.    ResultSet调用getBlob或getClob方法获取Blob或Clob类型的对象

iii.   Blob调用getBytes或getInputStream方法获取Image等对象

iv.   代码如下:

PreparedStatement stat = conn.prepareStatement(“SELECT Cover FROM BookCovers WHERE ISBN=?”);

stat.set(1, isbn);

ResultSet result = stat.executeQuery();

If(result.next()){

//从ResultSet中获取Blob对象

Blob coverBlob = result.getBlob(1);

//Blob对象打开字节流,获取数据

Image coverImage = ImageIO.read(coverBlob.getBinaryStream());

}

v.  同理,Clob调用getSubString或getCharacterStream来获取字符数据

存储LOB对象到数据库流程

i. 在Connection对象上调用createBlob或createClob得到空的Blob、Clob

ii. 从Blob、Clob获取该LOB的输出流或写出器

iii. 将数据通过输出流写出数据到LOB对象中

iv. 将该LOB对象存储到数据库中

v. 代码如下:

Blob coverBlob = conn.createBlob();

int offset = 0;

OutputStream out = coverBlob.setBinaryStream(offset);

//将Image对象coverImage的数据用二进制流输出到Blob对象中

ImageIO.write(coverImage, “PNG”, out);

PreparedStatement stat = conn.prepareStatement(“INSERT INTO Cover VALUES (?,?)”);

stat.set(1, isbn);

//将Blob对象插入数据库中

stat.set(2, coverBlob);

stat.executeUpdate();

原文:http://www.cnblogs.com/ixenos/p/6294081.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值