我正在研究异步获取 DataReader 的 DAL。
我想编写一个将 DataReader 转换为 DataSet 的方法。它需要处理不同的模式,以便这个方法可以处理我所有的获取需求。
PS我正在异步填充SQLDataReader,请不要给出摆脱DataReader的答案。
我正在研究异步获取 DataReader 的 DAL。
我想编写一个将 DataReader 转换为 DataSet 的方法。它需要处理不同的模式,以便这个方法可以处理我所有的获取需求。
PS我正在异步填充SQLDataReader,请不要给出摆脱DataReader的答案。
DataTable.load()可用于通用方法。
do {
var table = new DataTable();
table.Load(reader);
dataset.Tables.Add(table);
} while(!reader.IsClosed);
试试DataSet.Load()。它有几个采用 IDataReader 的重载。
如果由于某种原因 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);