从SQLDataReader填充数据集的最佳方法
问题描述:
我正在获取异步获取DataReader的DAL。从SQLDataReader填充数据集的最佳方法
我想写一个方法将DataReader转换为DataSet。它需要处理不同的模式,以便这一个方法可以处理我所有的提取需求。
P.S.我正在异步填充SQLDataReader,请不要给出摆脱DataReader的答案。
答
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