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

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

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

    zhyiwww
    用平實的筆,記錄編程路上的點點滴滴………
    posts - 536,comments - 394,trackbacks - 0


    我在處理結(jié)果集的時候,做了一個處理,把記錄都處理成了Map的對象,而把結(jié)果集處理成了一個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對象時,總是報SQLException異常。經(jīng)過調(diào)試,發(fā)現(xiàn)在blob.getBinaryStream()時發(fā)生異常。

    無奈之下做了一個試驗。

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

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


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


    public interface Blob

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

    接口 ResultSetCallableStatementPreparedStatement 中的方法(如 getBlobsetBlob)允許編程人員訪問 SQL BLOB 值。Blob 接口提供某些方法來獲得 SQL BLOB (Binary Large Object) 值的長度、在客戶端實現(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)  編輯  收藏 所屬分類: j2eeoracle
    主站蜘蛛池模板: **毛片免费观看久久精品| 一级毛片在播放免费| 99在线观看免费视频| 国产亚洲综合成人91精品 | 午夜a级成人免费毛片| 亚洲videosbestsex日本| 香蕉97超级碰碰碰免费公| 亚洲制服丝袜精品久久| 国产高清不卡免费在线| 亚洲国产精品免费观看| 免费看的黄色大片| 日韩在线观看视频免费| 国产亚洲精品AA片在线观看不加载 | 中文毛片无遮挡高潮免费| 亚洲依依成人精品| 女人被男人躁的女爽免费视频| 亚洲欧洲无码一区二区三区| 黄网址在线永久免费观看 | 亚洲精品福利视频| 国国内清清草原免费视频99| 亚洲日产乱码一二三区别 | 一本色道久久88综合亚洲精品高清| 免费大片av手机看片高清| 中文亚洲AV片在线观看不卡| 久久久久久久99精品免费 | 国产免费观看视频| 中文字幕成人免费高清在线| 亚洲欧洲国产日韩精品| 四虎影院在线免费播放| 精品国产污污免费网站入口在线| 亚洲成人午夜在线| 成年女人看片免费视频播放器| 黄网站色成年片大免费高清| 国产亚洲精AA在线观看SEE| 亚洲成人免费电影| 美女视频黄a视频全免费网站一区| 亚洲乱码无码永久不卡在线| 97免费人妻无码视频| 曰批全过程免费视频免费看 | 亚洲综合日韩久久成人AV| 国产a视频精品免费观看|