我正在獲取異步獲取DataReader的DAL。從SQLDataReader填充數據集的最佳方法
我想寫一個方法將DataReader轉換爲DataSet。它需要處理不同的模式,以便這一個方法可以處理我所有的提取需求。
P.S.我正在異步填充SQLDataReader,請不要給出擺脫DataReader的答案。
我正在獲取異步獲取DataReader的DAL。從SQLDataReader填充數據集的最佳方法
我想寫一個方法將DataReader轉換爲DataSet。它需要處理不同的模式,以便這一個方法可以處理我所有的提取需求。
P.S.我正在異步填充SQLDataReader,請不要給出擺脫DataReader的答案。
嘗試DataSet.Load()。它有幾個重載採取IDataReader。
DataTable.load()可用於通用方法。
do {
var table = new DataTable();
table.Load(reader);
dataset.Tables.Add(table);
} while(!reader.IsClosed);
如果由於某種原因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);
當時DataSet.Load( ) 不好? http://msdn.microsoft.com/en-us/library/5fd1ahe2.aspx – 2009-02-04 05:33:11
其實我並不知道這個選項。迫不及待地想知道.Net框架在版本5等方面會有多複雜。 – 2009-02-04 06:01:42
要麼是我,要感謝Matt! – Phaedrus 2009-02-04 06:06:27