2012-07-03 32 views
1

我有一个名为对象:如何SqlCeDataReader重复两次

SqlCeDataReader rdr; 

因为SqlCeDataReader没有HasRows功能,我写了一个:

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

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

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

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

谢谢。

+1

[SqlCeDataReader.HasRows地产(http://msdn.microsoft.com/en-us /library/system.data.sqlserverce.sqlcedatareader.haspx.aspx).. – Blorgbeard

回答

2

您不能迭代两次 - SqlCeDataReader“提供了一种读取来自数据源的数据流的只向流的方法。” - MSDN

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

+0

问题是它返回我+ \t \t rdr.HasRows \t'rdr.HasRows'抛出了一个'System.InvalidOperationException'类型的异常\t bool {System .InvalidOperationException} – Alvin

+0

base {System.SystemException} = {“如果底层游标不可滚动,SQL Server Compact不支持对HasRows属性的调用。”} – Alvin

+0

我认为必须使用SqlDataAdapter。 – Alvin

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."); 
    } 
}