Believe it,do it!

Ideal is the beacon. Without ideal, there is no secure direction; without direction ,there is no life.
理想是指路明灯。没有理想,就没有坚定的方向;没有方向,就没有生活。
CTRL+T eclipse
posts - 35, comments - 3, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

将图片文件写入数据库BLOB

Posted on 2009-05-18 13:51 三羽 阅读(3727) 评论(0)  编辑  收藏 所属分类: JAVA资料
  import   java.sql.*;  
  import   oracle.sql.*;  
  import   java.io.*;  
  import   oracle.jdbc.driver.OracleResultSet;  
   
  public   class   WriteBlob   {  
   
  public   static   void   main(String[]   args)   {  
   
  try   {  
  //   连接数据库  
  //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
  //Connection   conn   =   DriverManager.getConnection("jdbc:odbc:Yzl","pda","pwpda");          
   
  Class.forName("oracle.jdbc.driver.OracleDriver");                                                                
  Connection   conn   =   DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:SISSI","pda","pwpda");  
  conn.setAutoCommit(false);  
   
  //   获取源照片数据  
   
  BLOB     blob   =   null;  
  Blob     blob2   =   null;  
  String   fileName   =   "c:\\01.jpg";  
  File   f   =   new   File(fileName);  
   
   
  //   先插入一条记录,用于后面获得一个Blob对象  
  PreparedStatement   pstmt   =   conn.prepareStatement("insert   into   javatest(PICNAME,content)   values(?,empty_blob())");  
  pstmt.setString(1,"Yzl");    
  pstmt.executeUpdate();  
  pstmt.close();  
   
  //   获得Blob对象(由于Blob是接口,不能实例化,所以只好用这种曲折方法获得)  
  pstmt   =   conn.prepareStatement("SELECT   content   FROM   JAVATEST   WHERE   trim(PICNAME)=?   ");  
  pstmt.setString(1,"Yzl");  
  ResultSet   rset   =   pstmt.executeQuery();  
   
  if   (rset.next())   blob   =   (BLOB)rset.getBlob(1);  
  pstmt.close();  
   
  if   (blob   ==   null){  
  System.out.println("blob   is   null");  
   
  conn.close();  
  return   ;  
  }  
   
  //   填充Blob值,用于提交到数据库  
  FileInputStream   fin   =   new   FileInputStream(f);  
  System.out.println("file   size   =   "   +   fin.available());  
  OutputStream   out   =   blob.getBinaryOutputStream();  
  byte[]   data   =   new   byte[(int)fin.available()];  
   
          //   获取  
          fin.read(data);  
          out.write(data);  
           
          //   关闭资源          
          fin.close();  
          out.close();  
           
          //   插入数据库  
          pstmt   =   conn.prepareStatement("update   javatest   set   content=?   where   PICNAME=?");  
          pstmt.setBlob(1,blob);  
          pstmt.setString(2,"Yzl");  
          pstmt.executeUpdate();  
          pstmt.close();  
           
          //   提交  
          conn.commit();  
           
          //   获取数据库中的照片          
  pstmt   =   conn.prepareStatement("SELECT   content   FROM   JAVATEST   WHERE   trim(PICNAME)=?   ");  
  pstmt.setString(1,"Yzl");  
  rset   =   pstmt.executeQuery();  
   
  if   (rset.next())   blob   =   (BLOB)((OracleResultSet)rset).getBLOB(1);  
  pstmt.close();  
   
  if   (blob   ==   null){  
  System.out.println("blob2   is   null");  
   
  conn.close();  
  return   ;  
  }  
   
  //   输出到磁盘  
  //   获得  
  FileOutputStream   fout   =   new   FileOutputStream(new   File("c:\\02.jpg"));  
  InputStream   in   =   blob.asciiStreamValue();  
  data   =   new   byte[(int)in.available()];  
   
  System.out.println("数据库中照片的字节数:"+in.available());                       //   此句总是为   0   不知道为什么,有谁知道吗?  
   
          //   输出  
          in.read(data);  
          fout.write(data);  
           
          //   关闭资源          
          fin.close();  
          out.close();  
          conn.close();  
           
          //   打开  
          //Process   pro   =   Runtime.getRuntime().exec("cmd   /c   start   c:\\02.jpg");    
           
           
          }   catch   (SQLException   e)   {  
           
          System.err.println(e.getMessage());  
           
          e.printStackTrace();  
           
          }   catch   (IOException   e)   {  
           
          System.err.println(e.getMessage());  
           
          }   catch(ClassNotFoundException   e){  
           
          e.printStackTrace();  
          }  
          }  
   
  }

只有注册用户登录后才能发表评论。


网站导航: