最近在学习把图片存入数据库,存进去了,但图片下半部分为一段乱了,以下是我的代码:Filef=newFile(filePath);conn.setAutoCommit(false);PreparedStatementp=conn.prepareStatement...
最近在学习把图片存入数据库,存进去了,但图片下半部分为一段乱了,以下是我的代码:
File f=new File(filePath);
conn.setAutoCommit(false);
PreparedStatement p=conn.prepareStatement("insert into pic values (?,empty_blob())");
p.setString(1, filePath);
if(p.executeUpdate()==1){
conn.commit();
p=conn.prepareStatement("select * from pic where filename=? for update");
p.setString(1, filePath);
ResultSet rs=p.executeQuery();
while(rs.next()){
Blob b=rs.getBlob("FILEBLOB");
InputStream is=new FileInputStream(f);
OutputStream os=b.setBinaryStream(0);
os.flush();
byte[] bb=new byte[is.available()];
int flag=0;
flag=is.read(bb);
os.write(bb);
}
conn.commit();
}else{
conn.rollback();
}
我试过把blob流,换成文件输出流,复制的新图片没问题,输入流应该没问题,但存到数据库就会乱,这是为什么。。数据库用的是oracle10g,附源图片和数据库读出的图片,数据库中存的图片下半部分全灰了,换了几张图片都这样
呃。。已解决,应该是oracle缓存的问题。。write完之后,再多加一行os.flush();就好用了
展开