<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    狂淘

    www.kuangtao.net

       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      6 隨筆 :: 185 文章 :: 68 評論 :: 0 Trackbacks

    package eg;  
    import java.io.*;  
    import java.sql.*;  
    public class BlobClobExample {  
     
        public static void main(String[] args) {  
            Connection conn = null;  
            try {  
                conn = JDBCUtils.getConnection(); // 建立連接  
                Statement s = conn.createStatement(); // 創建Statement對象  
                s.executeUpdate("drop table documents");  
                // 這句是為了避免再次創建表documents  
                s  
                        .executeUpdate("CREATE TABLE documents(id INT, text CLOB(64 K) , photo Blob(1440 K))");  
                // 以上就是創建包含Clob和Blob對象的表的過程  
                // 和將一般的字段差不多,后面括號中代表該對象的大小,其語法為:  
                // CLOB (length [{{K |M |G}]) 表示長度為K、M、G等,沒有帶表示比特  
                conn.commit(); // 提交操作  
                // 以下是將本地文件中,本程序的源文件加載為一個流,用于向數據庫中寫入Clob字段  
                File file1 = new File("BlobClobExample.java");  
                int len1 = (int) file1.length();  
                InputStream fis1 = new java.io.FileInputStream(file1);  
                // 以下是將當前源代碼目錄的子目錄“11”下的“1.JPG”文件加載為一個流,  
                // 用于后面向數據庫中寫入Blob字段  
                File file2 = new File("c:\\11\\1.JPG");  
                int len2 = (int) file2.length();  
                InputStream fis2 = new FileInputStream(file2);  
                // 以上兩個簡單吧??!  
                // 創建一個PreparedStatement對象,用于批量插入內容  
                // 使用PreparedStatement對象可以節省,數據庫編譯SQL指令的時間,  
                // 因為在使用PreparedStatement對象時,該SQL語句是預先編譯好了,  
                // 對于某些變化的參數使用占位符(Place Holder)代替  
                // 這對于以后將要執行多次的同一操作,該操作僅僅是參數不同,是極其有利  
                // 比如在網頁上輸入客戶信息時,用戶要填入的數據基本是一樣的(你可以填也可以不填)  
                // 這時后臺的數據庫可以使用PreparedStatement對象,每次都是設置參數,執行操作  
                PreparedStatement ps = conn  
                        .prepareStatement("INSERT INTO documents VALUES (?, ?,?)");  
                ps.setInt(1, 250);  
                ps.setAsciiStream(2, fis1, len1);  
                ps.setBinaryStream(3, fis2, len2);  
                // 以上三步是設置占位符的數值  
                ps.execute(); // 執行操作  
                // 以上四步可以重復執行。PreparedStatement就是為了適用于此用途  
                conn.commit();  
                // 以上完成了數據的寫入  
                // 以下是數據的讀出  
                ResultSet rs = s  
                        .executeQuery("SELECT text , photo FROM documents WHERE id = 250");  
                while (rs.next()) {  
                    Clob aclob = rs.getClob(1); // 和提取一般對象一樣  
                    InputStream is = rs.getAsciiStream(1); // 特殊的,對于與得到Clob的流  
                    // 這是得到Clob、Blob流的第一種方法  
                    // 以下是對流進行處理的過程。Clob本身是包含大字符的對象  
                    // 順其自然,以下是使用java IO中讀取字符流的方法讀取它  
                    BufferedReader br = new BufferedReader(  
                            new InputStreamReader(is));  
                    String line = null;  
                    while (null != (line = br.readLine())) {  
                        System.out.println(line); // 將其輸出至屏幕,實際你可以按照需要處理  
                    }  
                    is.close();  
                    java.sql.Blob ablob = rs.getBlob(2); // 和操作其它基本類型的字段一樣  
                    System.out.println(ablob.length()); // 簡單地操作Blob的實例  
                    // 實際你可以使用Clob的API對其進行任何它允許的操作,請查API  
                    InputStream bis = ablob.getBinaryStream(); // 得到Blob實例的字節流  
                    // 這是操作Clob、Blob等對象的第二種方法,也是最自然的用法  
                    OutputStream os = new FileOutputStream("11.jpg");  
                    // 用于將數據庫中的Blob存放到目前目錄的“11.jpg”文件中  
                    int b = bis.read(); // 以下就是象操作其它java字節流一樣操作了  
                    while (b != -1) {  
                        os.write((char) b);  
                        b = bis.read();  
                    }  
                    os.flush();  
                    os.close();  
                    bis.close();  
                }  
     
            } catch (Exception e) {  
                e.printStackTrace();  
            } finally {  
                if (conn != null)  
                    conn.close();  
            }  
     
        }  


    本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zhangxs_3/archive/2009/03/22/4014308.aspx

    posted on 2009-08-25 13:06 狂淘 閱讀(947) 評論(0)  編輯  收藏 所屬分類: oracle
    主站蜘蛛池模板: 在线视频免费观看高清| 88av免费观看| 亚洲国产精品不卡毛片a在线| 亚洲女子高潮不断爆白浆| 欧美a级成人网站免费| 亚洲ts人妖网站| 最新中文字幕免费视频| 亚洲欧美成人一区二区三区| 日韩特黄特色大片免费视频| 美女被艹免费视频| 国产亚洲色视频在线| 国产羞羞的视频在线观看免费| 久久久久无码精品亚洲日韩| 最新69国产成人精品免费视频动漫 | 18女人毛片水真多免费| 亚洲高清美女一区二区三区| 国产精品怡红院永久免费| 亚洲国产综合精品中文第一| 免费一看一级毛片人| 成人网站免费大全日韩国产| 亚洲今日精彩视频| 91九色精品国产免费| 日韩色视频一区二区三区亚洲 | 亚洲国产日韩a在线播放| 免费国产美女爽到喷出水来视频| 无遮挡呻吟娇喘视频免费播放| 国产亚洲午夜高清国产拍精品| 99精品热线在线观看免费视频| 亚洲精品伊人久久久久| 免费观看午夜在线欧差毛片| 中文字幕不卡免费高清视频| 亚洲成在人线中文字幕| 国产一级大片免费看| 色欲A∨无码蜜臀AV免费播| 亚洲一区二区三区在线网站| 亚洲中文字幕无码专区| 免费A级毛片无码视频| 亚洲精品美女久久久久久久| 亚洲韩国精品无码一区二区三区| 国产1024精品视频专区免费| 一级成人a做片免费|