大物件的處理
阿新 • • 發佈:2018-11-11
大物件的處理
儲存大物件
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();