5

如何将 DataSet 转换为 DataReader?

4

6 回答 6

13

您可以使用以下代码将数据集更改为DataReader

DataTableReader rd = ds.Tables[0].CreateDataReader();
于 2013-02-21T10:35:11.870 回答
4

DataSet 和 DataTable 都公开了一个创建 DataTableReader 的方法 CreateDataReader。检查这些链接 -

http://msdn.microsoft.com/en-us/library/system.data.dataset.createdatareader.aspx

http://msdn.microsoft.com/en-us/library/system.data.datatable.createdatareader.aspx

于 2010-08-20T09:58:10.577 回答
0

DataSet有一个方法CreateDataReader会创建一个DataTableReader,但我不认为你可以创建一个DataReader.

数据集.CreateDataReader

于 2010-08-20T09:51:32.550 回答
0

DataSet 是一个断开连接的内存对象。DataReader 是一个连接的单向对象。

所以我想这是不可能的。

真的需要吗?

于 2010-08-20T09:52:18.633 回答
0

如果要遍历 DataSet,则不需要 DataReader。DataSet 是一个断开连接的内存对象,因此使用 for-each 遍历它:

foreach(var row in ds.Tables["YourTable"])
{
     var value = row.Field<int>("ID"); // etc
}
于 2010-08-20T09:55:13.747 回答
0

您不能将 DataSet 转换为 DbDataReader。

但是,您可以通过调用 DataSet 上的 CreateDataReader 方法来创建将从 DataSet 读取结果的 DbDataReader。

然而,这似乎是一件奇怪的事情。您可以使用 DataSet 的 Tables 属性和 DataTable 的 Rows 属性简单地遍历 DataSet 中包含的结果。使用 DbDataReader 将限制您仅转发对结果的访问。我可以从使用 DbDataReader 中看到的唯一好处是,如果您有一个 API 调用来进行需要一个作为参数的调用。

如果您的 DataSet 是来自数据库的 SELECT 命令的结果,您应该能够通过调用 DbCommand.ExecuteReader() 来获取 DbDataReader。这将完全删除 DataSet 并产生更有效的结果。

于 2010-08-20T10:29:10.730 回答