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 三羽 閱讀(3751) 評論(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();  
                    }  
                    }  
             
            }
          主站蜘蛛池模板: 新蔡县| 南木林县| 信阳市| 同德县| 会东县| 锦屏县| 余干县| 澎湖县| 南汇区| 蓝山县| 香港| 紫阳县| 黄山市| 大悟县| 清河县| 赤城县| 黄浦区| 五大连池市| 武冈市| 夹江县| 涟源市| 乌拉特前旗| 稷山县| 凤翔县| 枝江市| 武乡县| 平昌县| 兴城市| 福泉市| 军事| 定结县| 高邮市| 昌宁县| 南涧| 诸城市| 红原县| 安顺市| 余庆县| 佛坪县| 喀什市| 滦南县|