如何将DataSet a转换为DataReader?

时间:2010-08-20 09:44:24

标签: c# ado.net dataset datareader

如何将DataSet转换为DataReader?

6 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:4)

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

答案 2 :(得分:0)

DataSet有一个名为CreateDataReader的方法会创建DataTableReader,但我认为您不能创建DataReader

DataSet.CreateDataReader

答案 3 :(得分:0)

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

所以我想这是不可能的。

真的需要吗?

答案 4 :(得分:0)

如果要通过DataSet进行迭代,则不需要DataReader。 DataSet是一个断开连接的内存中对象,因此使用for-each迭代它:

foreach(var row in ds.Tables["YourTable"])
{
     var value = row.Field<int>("ID"); // etc
}

答案 5 :(得分:0)

您无法将DataSet转换为DbDataReader。

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

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

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