如何SqlCeDataReader迭代两次

时间:2012-07-03 05:09:21

标签: c# .net

我有一个名为的对象:

SqlCeDataReader rdr;

因为SqlCeDataReader没有HasRows函数,所以我写了一个:

if (!HasRows(rdr)) // Iterate to find number of rows
{
}

while (rdr.Read()) // Read the reader
{
}

rdr.Read()不会返回任何结果。

如果我注释掉第一次迭代,它会返回结果。

谢谢。

2 个答案:

答案 0 :(得分:2)

你不能迭代两次 - SqlCeDataReader“提供了一种从数据源读取仅向前数据行流的方法。” - MSDN

但确实有HasRows property - 只是使用它?

答案 1 :(得分:0)

我也不确定如何正确地做到这一点,但在我的应用程序上我写了类似

的内容
using (SqlCeDataReader rdr = sceCmd.ExecuteReader())
{
    int i = 0;
    while (rdr.Read())
    { 
        // some other code here
        i++;
    }
    rdr.close();
    if(i==0)
    {
        // something to say if its empty
        Console.WriteLine("No data found.");
    } else {
        // something else to say if its not empty
        Console.WriteLine(i + "data found.");
    }
}