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();
}