<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
    主站蜘蛛池模板: 日韩免费视频观看| 成人免费午夜视频| 亚洲中文字幕在线第六区| 视频免费1区二区三区| 免费一级做a爰片久久毛片潮喷| 亚洲精品无码你懂的| 在线观看亚洲免费| 免费精品国自产拍在线播放| 免费大片在线观看网站| a毛片成人免费全部播放| 亚洲国产精品高清久久久| 久久久久高潮毛片免费全部播放 | 2022国内精品免费福利视频| 亚洲综合色在线观看亚洲| baoyu116.永久免费视频| 久久亚洲精品成人| 曰曰鲁夜夜免费播放视频| 亚洲美国产亚洲AV| 精品国产香蕉伊思人在线在线亚洲一区二区| 免费精品国产自产拍在线观看| 亚洲无人区一区二区三区| 人人揉揉香蕉大免费不卡| 亚洲一卡二卡三卡| 免费国产综合视频在线看| 久久免费高清视频| tom影院亚洲国产一区二区| 国产成人涩涩涩视频在线观看免费 | 亚洲精品乱码久久久久久蜜桃不卡| 日本人成在线视频免费播放| 亚洲国产精品成人久久久| 麻豆精品国产免费观看| 久久99精品免费一区二区| 亚洲国产成人九九综合| 亚洲av无码成人精品区| 99视频免费播放| 亚洲AV无码之国产精品| 久久亚洲AV午夜福利精品一区| a级毛片无码免费真人| 国内精品免费久久影院| 亚洲国产日韩综合久久精品| 国产精品亚洲综合一区|