如何将DataSet转换为DataReader?
如何将DataSet转换为DataReader?
您可以使用以下代码将数据集更改为 DataReader
:
DataTableReader rd = ds.Tables[0].CreateDataReader();
DataSet 和 DataTable 都暴露了一个 CreateDataReader 方法,用于创建 DataTableReader。 请查看以下链接 -
http://msdn.microsoft.com/en-us/library/system.data.dataset.createdatareader.aspx
http://msdn.microsoft.com/en-us/library/system.data.datatable.createdatareader.aspx
foreach(var row in ds.Tables["YourTable"])
{
var value = row.Field<int>("ID"); // etc
}
DataSet
有一个名为CreateDataReader
的方法,它将创建一个DataTableReader
,但我认为您无法创建DataReader
。
DataSet是一个断开连接的内存对象。DataReader是一个连接的单向对象。
所以我猜这是不可能的。
真的需要吗?
你不能将 DataSet 转换为 DbDataReader。
但是,你可以通过在 DataSet 上调用 CreateDataReader 方法来创建一个 DbDataReader,以读取 DataSet 中的结果。
然而,这似乎是一件奇怪的事情。你可以简单地使用 DataSet 的 Tables 属性和 DataTable 的 Rows 属性迭代包含在 DataSet 中的结果。使用 DbDataReader 将限制你对结果的仅向前访问。我能看到使用 DbDataReader 的唯一好处是如果你需要将其作为参数进行 API 调用。
如果你的 DataSet 是从数据库中的 SELECT 命令的结果,你应该能够通过调用 DbCommand.ExecuteReader() 来获取一个 DbDataReader。这将完全剔除 DataSet 并产生更高效的结果。