JDBC实现oracle blob 出库入库

1,首先建一个足够简单的表imageTable
      id         varchar(20)
      image   blob
2,blob入库
      拷贝Sunset.jpg图片在C盘根目录下     
 1 None.gif      DriverManager.registerDriver( new  oracle.jdbc.driver.OracleDriver()); 
 2 None.gif      Connection conn  =  DriverManager.getConnection( " jdbc:oracle:thin:@localhost:1521:beyondduke " , " duke " , " duke " ); 
 3 None.gif      conn.setAutoCommit( false ); 
 4 None.gif      BLOB blob  =   null
 5 None.gif      PreparedStatement pstmt  =  conn.prepareStatement( " insert into imageTable(id,image) values(?,empty_blob()) " ); 
 6 None.gif      pstmt.setString( 1 , " 10001 " ); 
 7 None.gif      pstmt.executeUpdate(); 
 8 None.gif      pstmt.close(); 
 9 None.gif      pstmt  =  conn.prepareStatement( " select content from imageTable where id= ? for update " ); 
10 None.gif      pstmt.setString( 1 , " 10001 " ); 
11 None.gif      ResultSet rs  =  pstmt.executeQuery(); 
12 None.gif      if  (rs.next()) blob  =  (BLOB) rs.getBlob( 1 ); 
13 None.gif      String fileName  =   " c://Sunset.jpg "
14 None.gif      File f  =   new  File(fileName); 
15 None.gif      FileInputStream fin  =   new  FileInputStream(f); 
16 None.gif      System.out.println( " file size =  "   +  fin.available()); 
17 None.gif      pstmt  =  conn.prepareStatement( " update imageTable set image=? where id=? " ); 
18 None.gif      OutputStream out  =  blob.getBinaryOutputStream(); 
19 None.gif        byte [] data  =   new   byte [( int )fin.available()]; 
20 None.gif      fin.read(data); 
21 None.gif      out.write(data); 
22 None.gif      out.close(); 
23 None.gif      fin.close(); 
24 None.gif
25 None.gif      pstmt.setBlob( 1 ,blob); 
26 None.gif      pstmt.setString( 2 , " fankai " ); 
27 None.gif
28 None.gif      pstmt.executeUpdate(); 
29 None.gif      pstmt.close(); 
30 None.gif
31 None.gif      conn.commit(); 
32 None.gif      conn.close(); 
浏览数据库的数据,发现image项中数据大小与图片大小一致,说明入库了!
 3,blob出库
 1 None.gif   DriverManager.registerDriver( new  oracle.jdbc.driver.OracleDriver());
 2 None.gif   Connection conn  =  DriverManager.getConnection(             " jdbc:oracle:thin:@localhost:1521:beyondduke " " duke " , " duke " );     
          conn.setAutoCommit(
false );
 3 None.gif    Statement stmt  =  conn.createStatement();
 4 ExpandedBlockStart.gifContractedBlock.gif /**/ /* 查询BLOB对象 */
 5 None.gif    ResultSet rs  =  stmt.executeQuery( " SELECT content FROM javatest WHERE id='1001' " );
 6 ExpandedBlockStart.gifContractedBlock.gif while  (rs.next())  dot.gif {
 7ExpandedSubBlockStart.gifContractedSubBlock.gif/**//* 取出此BLOB对象 */    
 8InBlock.gif    oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("image");
 9ExpandedSubBlockStart.gifContractedSubBlock.gif BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("d://Sunset.jpg"));            
           BufferedInputStream in 
= new BufferedInputStream(blob    .getBinaryStream());        
10InBlock.gif    int c;
11ExpandedSubBlockStart.gifContractedSubBlock.gifwhile ((c = in.read()) != -1dot.gif{ out.write(c);        
12ExpandedSubBlockEnd.gif   }

13InBlock.gif   in.close();
14InBlock.gif   out.close();
15InBlock.gif   rs.close();
16InBlock.gif   stmt.close();
17InBlock.gif   conn.close();
18InBlock.gif
检查D盘根目录,会发现Sunset.jpg文件,跟C盘下是一样的,说明入库出库成功! 30542.html

beyondduke 2006-02-14 09:23 发表评论






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值