2012-07-03 4 views
1

I라는 개체가 있습니다반복 SqlCeDataReader하는 방법 두 번

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

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

rdr.Read는() 중 하나를 반환하지 않습니다 HasRows 기능이 없습니다

SqlCeDataReader rdr; 

SqlCeDataReader 때문에, 내가 하나를 썼다을 결과.

첫 번째 반복을 주석 처리하면 결과가 반환됩니다.

감사합니다.

+1

[SqlCeDataReader.HasRows 재산권 (http://msdn.microsoft.com/en-us /library/system.data.sqlserverce.sqlcedatareader.hasrows.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."); 
    } 
}