如何将 DataSet a 转换为 DataReader?

6

如何将DataSet转换为DataReader?


你不能这样做。如果你想要更多的解释,请提供更多的信息。 - Thorsten Dittmar
2
我觉得你尝试做的事情有缺陷。你在更高层面上想要做什么? - Dan
6个回答

15

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

DataTableReader rd = ds.Tables[0].CreateDataReader();

5

0
如果您想遍历 DataSet,就不需要使用 DataReader。DataSet 是一个断开连接的内存对象,因此可以使用 for-each 进行遍历:
foreach(var row in ds.Tables["YourTable"])
{
     var value = row.Field<int>("ID"); // etc
}

0

DataSet有一个名为CreateDataReader的方法,它将创建一个DataTableReader,但我认为您无法创建DataReader

DataSet.CreateDataReader


0

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

所以我猜这是不可能的。

真的需要吗?


https://msdn.microsoft.com/zh-cn/library/system.data.common.dbdatareader(v=vs.110).aspx - 从数据源中读取一系列只能向前移动的行。并未提及与数据库的“连接”相关信息。 - JJS

0

你不能将 DataSet 转换为 DbDataReader。

但是,你可以通过在 DataSet 上调用 CreateDataReader 方法来创建一个 DbDataReader,以读取 DataSet 中的结果。

然而,这似乎是一件奇怪的事情。你可以简单地使用 DataSet 的 Tables 属性和 DataTable 的 Rows 属性迭代包含在 DataSet 中的结果。使用 DbDataReader 将限制你对结果的仅向前访问。我能看到使用 DbDataReader 的唯一好处是如果你需要将其作为参数进行 API 调用。

如果你的 DataSet 是从数据库中的 SELECT 命令的结果,你应该能够通过调用 DbCommand.ExecuteReader() 来获取一个 DbDataReader。这将完全剔除 DataSet 并产生更高效的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接