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