8

我正在研究异步获取 DataReader 的 DAL。

我想编写一个将 DataReader 转换为 DataSet 的方法。它需要处理不同的模式,以便这个方法可以处理我所有的获取需求。

PS我正在异步填充SQLDataReader,请不要给出摆脱DataReader的答案。

4

3 回答 3

14

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

do {
    var table = new DataTable();
    table.Load(reader);
    dataset.Tables.Add(table);
} while(!reader.IsClosed);
于 2012-06-22T04:07:19.913 回答
9

试试DataSet.Load()。它有几个采用 IDataReader 的重载。

于 2009-02-04T06:40:09.803 回答
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);
于 2013-11-06T14:47:28.317 回答