熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

用NextResult方法取得多個Result Set

2013-11-13 09:42:22  來源: .NET編程 

  從 ADONET x 開始DataReader 就可以在單一次的查詢動作中「批次 (batch)」讀取 TSQL 語句以取回多個 table (數據表) 的數據也就是一次能夠回傳多個「結果集 (Result Set)」亦即所謂的「批次查詢」其中 DataReader 的 NextResult 方法是用來取得批次查詢中下一個 Result Set 的結果例如若要從兩個不同的 table 中撈取 column 值分別綁定至兩個 DropDownList 中我們不需要浪費系統資源去建立兩個 DataSource 對象而可以直接用下列的 Codebehind 代碼僅透過單一次的數據庫連結來達成          using (SqlConnection conn = new SqlConnection(strConnString))
        {
           connOpen();
           using (SqlCommand cmd = new SqlCommand())
            {
            cmdConnection = conn;
            // 利用分號「;」串連多句 SQL 語句之後再一次丟進數據庫去執行達成「批次」讀取或更新
            // 數據庫的目的此技巧亦適用於 INSERTUPDATEDELETE 的「批次」執行
            cmdCommandText = SELECT 字段字段 FROM 數據表 ; SELECT * FROM 數據表;
            using (SqlDataReader dr = cmdExecuteReader())
                {
              while(drRead())
                    {
                thisDropDownListItemsAdd(drGetSqlString()ToString() + drGetSqlInt()ToString());
              }
              drNextResult();
              while(drRead())
                    {
                thisDropDownListItemsAdd(drGetString() + drGetInt());
              }
            }
          }
        }

  讀取時若還有其它的 Result Set則 NextResult 方法會返回 True因此我們也可透過返回的布爾值搭配 While 或 Do Until 等循環依序再往下讀取 Result Set根據默認DataReader 會由第一個 Result Set 開始讀取此外若連結的為 SQL Server 數據庫從 ADONET x 開始DataReader 即支持以 GetSql 開頭的方法來取得數據其「性能 (performance)」會比Get 開頭的方法要好


From:http://tw.wingwit.com/Article/program/net/201311/11376.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.