Hashxu 2014-09-17
在开发的时候很多地方使用到将图片保存到数据库(Oracle)中,使用的时候直接从数据库中提取出来,避免因为保存路径的问题而找不到图片。
//声明需要用到的封装类
Connection conn=null;
Statement st=null;
ResultSet rs=null;
OutputStream output=null;
BufferedOutputStream outputStream=null;
BufferedInputStream inputStream=null;
try{
String url="jdbc\:oracle\:thin\:@localhost\:1521\:orcl"; //连接URL
String username="socct"; //用户名
String password="tiger"; //密码
Class.forName("oracle.jdbc.driver.OracleDriver"); //加载Oracle驱动
conn = DriverManager.getConnection(url,username, password); //得到连接池
File file=new File(filePath);
//将数据库中的Blob类型给一个默认值为 EMPTY_BLOB() 避免在执行sql语句时,得到的是空值
String sql ="select image from img_table where id= 1 for update";
st=conn.createStatement();
rs=st.executequery(sql); //执行sql语句
if(rs.next()){
oracle.sql.BLOB blob=(oracle.sql.BLOB)rs.getBlob("image");
output=blob.getBinaryOutputStream();
output = new BufferedOutputStream(outstream);
input = new BufferedInputStream(file.toURL().openStream());
byte[] buff = new byte[2048]; //用做文件写入的缓冲
int write;
while(-1!=(write= input.read(buff,0,buff.length))){
output.write(buff,0,write);
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
st.close();
rs.close();
outstream.close();
output.close();
input.close();
conn.close();
}