2009-02-04 43 views
8

我正在獲取異步獲取DataReader的DAL。從SQLDataReader填充數據集的最佳方法

我想寫一個方法將DataReader轉換爲DataSet。它需要處理不同的模式,以便這一個方法可以處理我所有的提取需求。

P.S.我正在異步填充SQLDataReader,請不要給出擺脫DataReader的答案。

+0

當時DataSet.Load( ) 不好? http://msdn.microsoft.com/en-us/library/5fd1ahe2.aspx – 2009-02-04 05:33:11

+0

其實我並不知道這個選項。迫不及待地想知道.Net框架在版本5等方面會有多複雜。 – 2009-02-04 06:01:42

+0

要麼是我,要感謝Matt! – Phaedrus 2009-02-04 06:06:27

回答

14

DataTable.load()可用於通用方法。

do { 
    var table = new DataTable(); 
    table.Load(reader); 
    dataset.Tables.Add(table); 
} while(!reader.IsClosed); 
0

如果由於某種原因Load方法失敗了,這裏是一個手動的方式來做到這一點:

    DataTable dt = new DataTable(); 
        dt = sdr.GetSchemaTable(); 
        //dt.Constraints.Clear(); 
        //dt.PrimaryKey = null; 
        //dt.BeginLoadData(); 
        if (sdr.HasRows) 
        { 
         DataRow row; 
         while (sdr.Read()) 
         { 
          row = dt.NewRow(); 
          sdr.GetValues(row.ItemArray); 
          dt.Rows.Add(row); 
         } 

另一種方法是使用SqlTableAdapter:

var adapter = new SqlDataAdapter(command); 
DataSet ds = new DataSet(); 
adapter.Fill(ds); 
相關問題