<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://www.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2010-02-04 10:30 zhyiwww 閱讀(2546) 評論(0)  編輯  收藏 所屬分類: j2ee 、oracle
    主站蜘蛛池模板: 亚洲1区1区3区4区产品乱码芒果| 在线观看亚洲网站| 91香蕉成人免费网站| 国产午夜亚洲精品不卡免下载| 一级毛片aaaaaa视频免费看| 亚洲人成影院在线高清| 亚洲色精品vr一区二区三区| 在线免费观看毛片网站| 免费av一区二区三区| 女人裸身j部免费视频无遮挡| 亚洲第一成人在线| 亚洲国产精品综合一区在线| 亚洲网址在线观看你懂的| 亚洲人成影院在线无码按摩店| 亚洲妇女水蜜桃av网网站| 成人无码精品1区2区3区免费看| 亚洲av无码成人精品区一本二本 | 一级黄色免费大片| 黄色成人网站免费无码av| 亚洲美女视频免费| a毛片基地免费全部视频| 德国女人一级毛片免费| 亚洲资源在线观看| 麻豆狠色伊人亚洲综合网站| 99re8这里有精品热视频免费| 国产精品极品美女自在线观看免费| 亚洲天堂免费在线视频| 在线观着免费观看国产黄| 亚洲AV无码乱码在线观看牲色| 国产亚洲美女精品久久久2020| 亚洲国产精品久久久天堂| 亚洲视频免费观看| 高清免费久久午夜精品| 午夜影院免费观看| 成人免费毛片内射美女APP| 亚洲午夜国产精品无卡| 国产无人区码卡二卡三卡免费 | 亚洲第一香蕉视频| 国产精品亚洲一区二区三区在线观看| 2021国产精品成人免费视频| 亚洲国产夜色在线观看|