大对象的处理
存储大对象
1.使用Collection.createBlob()创建一个Blob对象
2.获得这个Blob对象的输出流,setBinaryStream(1)
3.向流中写入字节
4.通过ps.setBlob()将二进制存在数据库中
PreparedStatement ps=conn.prepareStatement(sql);
Blob blob=conn.createBlob();//创建blob对象
OutputStream os=blob.setBinaryStream(1);//获得blob输出流
FileInputStream fis=new FileInputStream(path);
byte[] bs=new byte[100];//设置缓冲区
int size=-1;
while((size=fis.read(bs))!=-1){
os.write(bs,0,size);
}
fis.close();
os.close();
读取大对象
1.查询出ResultSet
2.获取Blob对象
3.获得这个对象的输入流
4.向流中写入字节
String sql="select * from emp where empno=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setInt(1,empno);
ResultSet rs=ps.executeQuery();//获取ResultSet
if(rs.next()){
Blob b=rs.getBlob();//获取Blob对象
InputStream is=b.getBinaryStream();
FileOutputStream fos=new FileOutputStream(Filename);
}
byte bs=new byte[100];
int size=-1;
while((size=is.read())!=-1){
fos.write(bs,0,size);
}
fos.close();
is.close();