如何将DataSet转换为DataReader?
答案 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
。
答案 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并产生更高效的东西。