Oracle中BLOB字段的操作

来源:互联网 发布:isp图像处理算法 编辑:程序博客网 时间:2024/05/22 15:42

package com.db;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.sql.DriverManager;
import java.sql.SQLException;

import oracle.jdbc.OracleResultSet;
import oracle.sql.BLOB;

public class Test {
 public Test(){
  try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   Connection con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.3:1521:sms9i2",
             "wapuser",
              "develop");
   BLOB blob = null;
   con.setAutoCommit(false);
   Statement stmt = con.createStatement();
   /*
    * 跟新BLOB
    *
    */
   /*
   String sql = "select SFZZP from HJB where ZJBH='220105194903261436' for update" ;
   ResultSet rs = stmt.executeQuery(sql);
   rs.next();    
   blob = (BLOB) (((OracleResultSet)rs).getBlob("SFZZP"));
   OutputStream out = blob.getBinaryOutputStream();
   File f = new File("c:/me.jpg");
   java.io.FileInputStream in = new FileInputStream(f);
   byte[] buffer=new byte[255]; // 建立缓冲区
   int len;
   while((len = in.read(buffer))!=-1){
    out.write(buffer,0,len);
   }
   in.close();
   out.close();
   rs.close();
   con.close();
   */
   
   String sql = "select SFZZP from HJB where ZJBH='220105194903261436'" ;
   ResultSet rs = stmt.executeQuery(sql);
   if(rs.next()){
    blob = (BLOB) (((OracleResultSet)rs).getBlob("SFZZP"));
   }
   InputStream in = blob.getBinaryStream();
   File f = new File("c:/2.jpg");
   FileOutputStream fileout = new FileOutputStream(f);
   byte[] buffer=new byte[255]; // 建立缓冲区
   int len;
   while((len=in.read(buffer))!=-1){
    fileout.write(buffer, 0, len);
   }
   fileout.close();
   in.close();
   rs.close();
   con.close();
   System.out.println("OK");
  }catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  catch (ClassNotFoundException e2) {
   // TODO Auto-generated catch block
   e2.printStackTrace();
  }catch (SQLException e3) {
   // TODO Auto-generated catch block
   e3.printStackTrace();
  }
  
 }
 public static void main(String[] args){
  new Test();
 }
}