使DbDataReader从结果集的开头重新开始读取

19

如果满足某个条件,如何使dr.Read();从开头开始再次读取?

类似于:

SqlDataReader dr = command.ExecuteReader();
for(int i=0; dr.Read() ; i++){
    if(condition ){
        //let dr.Read() start reading from the beginning
    }
}

DataReader 是只能向前读取的。 - Adrian Godong
再次调用该方法? - Max
数据读取器就像一个“消防水龙”,正如之前提到的那样,“只能向前”。这就是为什么它很精简,不需要记住任何以前的东西。 - granadaCoder
3个回答

25

你做不到。

*DataReader类是“只能向前”迭代器。

相反,你可以将结果存储在List<T>(或DataTable)中。


6

您可以通过首先使用dr.close();关闭数据读取器,然后再次初始化它来实现。

If(condition)
{
    dr.close();
    dr=command.ExecuteReader();
}

这里的“command”是MySqlCommand对象。


这仅适用于具有一个结果集的数据读取器。多个结果集将会重新发生。 - Matthias

6
唯一的重启方法是使用ExecuteReader()获取一个新的读取器。

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