Java读取Oracle BLOB字段

/** 

 * JDBC连接数据库并写入BLOB字段 

 * @author DaHai 

 * 

 */ 

public class OracleBlob { 

 public static void main(String[] args) { 

 OracleBlob ob= new OracleBlob (); 

 ob.insert("c:\\Test.txt"); 

 } 


 public Connection getConnection() { 

 Connection conn = null; 

 try { 

 Class.forName("oracle.jdbc.driver.OracleDriver"); 

 conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:test", "scott", "tigger"); 

 } catch (ClassNotFoundException e) { 

 e.printStackTrace(); 

 } catch (SQLException e) { 

 e.printStackTrace(); 

 } 

 return conn; 

 } 


 public void insert(String str) { 

 Connection conn = getConnection(); 

 PreparedStatement pstmt = null; 

 ResultSet rs = null; 

 try { 

 conn.setAutoCommit(false); 

 pstmt = conn.prepareStatement("insert into test (wygjz,wdmc,wd) values (?,?,empty_blob())"); 

 pstmt.setString(1, "163"); 

 pstmt.setString(2, "dahai"); 

 pstmt.executeUpdate(); 

 pstmt = conn.prepareStatement("select wd from test where wygjz=163 for update"); 

 rs = pstmt.executeQuery(); 

 while (rs.next()) { 

 oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob(1); 

 OutputStream os = blob.getBinaryOutputStream(); 

 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(str)); 

 byte[] buf = new byte[2048]; 

 int len = 0; 

 if ((len = bis.read(buf)) != -1) { 

 os.write(buf, 0, len); 

 os.flush(); 

 } 

 os.close(); 

 bis.close(); 

 } 

 conn.commit(); 

 } catch (FileNotFoundException e) { 

 e.printStackTrace(); 

 } catch (SQLException e) { 

 try { 

 if(conn!=null){ 

 conn.rollback(); 

 } 

 } catch (SQLException e1) { 

 e1.printStackTrace(); 

 } 

 e.printStackTrace(); 

 } catch (IOException e) { 

 e.printStackTrace(); 

 }finally{ 

 try { 

 if(rs!=null){ 

 rs.close(); 

 rs = null; 

 } 

 } catch (SQLException e) { 

 e.printStackTrace(); 

 } 

 try { 

 if(pstmt!=null){ 

 pstmt.close(); 

 pstmt = null; 

 } 

 } catch (SQLException e) { 

 e.printStackTrace(); 

 } 

 try { 

 if(conn!=null){ 

 conn.close(); 

 conn = null; 

 } 

 } catch (SQLException e) { 

 e.printStackTrace(); 

 } 

 } 

 } 


}



如果用Spring配置的话,可以将上面的getConnection()方法替换成

public Connection getConnection(){ 

 Connection conn = null; 

 ApplicationContext ctx = new ClassPathXmlApplicationContext("dbconfigs.xml"); 

 DataSource ds = (DataSource) ctx.getBean("dataSource"); 

 try{ 

 conn = ds.getConnection(); 

 if(conn != null){ 

 System.out.println("数据库连接成功!"); 

 } 


 }catch(SQLException e){ 

 e.printStackTrace(); 

 } 

 return conn; 

 }