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

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

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

    zhyiwww
    用平實(shí)的筆,記錄編程路上的點(diǎn)點(diǎn)滴滴………
    posts - 536,comments - 394,trackbacks - 0


    我在處理結(jié)果集的時(shí)候,做了一個(gè)處理,把記錄都處理成了Map的對象,而把結(jié)果集處理成了一個(gè)List對象。
    如下:
    public List<Map<String, Object>> toList() throws SQLException {

                List<Map<String,Object>> recordsList = new ArrayList<Map<String, Object>>();
           
                ResultSetMetaData meta = rst.getMetaData();
                int colCnt = meta.getColumnCount();
               
                while(rst.next()){
                   
                    Map<String,Object> record = new HashMap<String, Object>();
                   
                    for(int i=0;i<colCnt;i++){
                        String colName = meta.getColumnName(i+1);
                        Object colValue = rst.getObject(colName);
                        log.debug(colValue);
                        if(colValue instanceof Blob){
                            log.debug("blob type");
                        }else{
                            record.put(colName, colValue);
                        }
                       
                    }
                   
                    recordsList.add(record);
                }      
                  
                return recordsList;
            }

    之后,就關(guān)閉了resultset ,statement ,connection。然而在我從map對象里面取得blob對象時(shí),總是報(bào)SQLException異常。經(jīng)過調(diào)試,發(fā)現(xiàn)在blob.getBinaryStream()時(shí)發(fā)生異常。

    無奈之下做了一個(gè)試驗(yàn)。

    PreparedStatement stmt = null;
    //        ResultSet rst = null;
    //
    //        try {
    //            stmt = this.con
    //                    .prepareStatement("SELECT * FROM CCX_INFO_ARTICAL WHERE ARTICAL_ID=?");
    //            stmt.setLong(1, articalId);
    //
    //            rst = stmt.executeQuery();
    //            if(rst.next()){
    //                Blob b = rst.getBlob("ARTICAL_CONTENT");
    //                log.debug(b);
    ////                InputStream in = b.getBinaryStream();
    //               
    //               
    //               
    //               
    //                log.debug(in);
    //               
    //            }
    //
    //        } catch (SQLException e) {
    //            throw e;
    //        } finally {
    //            rst.close();
    //            if (stmt != null) {
    //                stmt.close();
    //            }
    //            if (this.con != null && this.con.getAutoCommit()) {
    //                this.con.close();
    //            }
    //        }
    //

    此段代碼可以順利的無異常的執(zhí)行。由此我推測認(rèn)為,主要是因?yàn)?resultset ,connection關(guān)閉引起的。這說明,在執(zhí)行了查詢操作之后,
    我們雖然可以得到一個(gè)blob對象,但是實(shí)際的內(nèi)容并沒有讀如內(nèi)存,也就是說,并沒有讀如到blob對象中,而此blob對象也就相當(dāng)于一個(gè)對數(shù)據(jù)庫中blob字段操作的一個(gè)引用,所以,此時(shí),如果想從blob字段中讀取數(shù)據(jù),還是需要數(shù)據(jù)庫連接的。

    而上面的封裝操作之后,數(shù)據(jù)庫連接已經(jīng)中斷,所以,再讀取數(shù)據(jù)時(shí),就發(fā)生了異常。


    下面是Blob接口的說明,也許能給我們更好的解釋.


    public interface Blob

    SQL BLOB 值在 JavaTM 編程語言中的表示形式(映射關(guān)系)。SQL BLOB 是內(nèi)置類型,它將 Binary Large Object 存儲為數(shù)據(jù)庫表的某一行中的一個(gè)列值。默認(rèn)情況下,驅(qū)動(dòng)程序使用 SQL locator(BLOB) 實(shí)現(xiàn) Blob,這意味著 Blob 對象包含一個(gè)指向 SQL BLOB 數(shù)據(jù)而不是數(shù)據(jù)本身的邏輯指針。Blob 對象在它被創(chuàng)建的事務(wù)處理期間有效。

    接口 ResultSetCallableStatementPreparedStatement 中的方法(如 getBlobsetBlob)允許編程人員訪問 SQL BLOB 值。Blob 接口提供某些方法來獲得 SQL BLOB (Binary Large Object) 值的長度、在客戶端實(shí)現(xiàn) BLOB 值以及確定 BLOB 值中某一字節(jié)樣本的位置。此外,此接口還擁有更新 BLOB 值的方法。






    |----------------------------------------------------------------------------------------|
                               版權(quán)聲明  版權(quán)所有 @zhyiwww
                引用請注明來源 http://m.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2010-02-04 10:30 zhyiwww 閱讀(2546) 評論(0)  編輯  收藏 所屬分類: j2ee 、oracle
    主站蜘蛛池模板: 最近中文字幕免费mv在线视频| 亚洲av无码无在线观看红杏| 99亚洲男女激情在线观看| 在线看片无码永久免费aⅴ| jizz日本免费| 亚洲第一精品在线视频| 日韩免费a级在线观看| 国产午夜精品久久久久免费视| 亚洲天堂电影在线观看| 免费大片在线观看网站| 99久久久国产精品免费蜜臀| 亚洲国产欧美日韩精品一区二区三区| 亚洲午夜无码久久久久| 24小时免费直播在线观看| 三上悠亚在线观看免费| 中文字幕无码精品亚洲资源网久久| 中文字幕亚洲乱码熟女一区二区 | 亚洲啪啪免费视频| 免费的黄网站男人的天堂| 亚洲精品成人网站在线播放| 亚洲精品成a人在线观看| 精品女同一区二区三区免费站| 成人特级毛片69免费观看| 91视频免费观看| 女同免费毛片在线播放| 亚洲午夜精品国产电影在线观看| 亚洲?V无码成人精品区日韩| 67194国产精品免费观看| 无码 免费 国产在线观看91| 亚洲宅男精品一区在线观看| 亚洲熟妇丰满多毛XXXX| 日韩特黄特色大片免费视频| 最近免费视频中文字幕大全| 中文字幕免费观看全部电影| 美女免费精品高清毛片在线视| 67194在线午夜亚洲| 亚洲邪恶天堂影院在线观看| 伊伊人成亚洲综合人网7777| 又粗又大又硬又爽的免费视频| 无码中文字幕av免费放| 最近免费中文字幕mv电影|