2013-04-05 2 views
0

누구든지 확인하거나 문제를 해결할 수 있습니까 DataReader으로 ACCDB 데이터베이스에 액세스하고 있습니다. DataReader을 설정하고 데이터베이스를 쿼리합니다. DataReader.HasRows을 확인하면 기록이 있는지 여부와 상관없이 사실이됩니다.Datareader.HasRow가 잘못되었습니다

데이터 테이블이 비어 있고 전혀 레코드가 없다는 것을 이중으로 확인했지만 DataReader.HasRows에 레코드가 있다고 계속 확인했습니다.

내가 계속 시도하고 DataReader.Read을 시도하면 반환 된 레코드가 없다는 것을 알면 "행/열에 대한 데이터가 없습니다"라는 오류 메시지가 나타납니다. 예상 될 것입니다.

이전에 본 사람이 있습니까? 아니면 이것이 일어나지 않는다고 말할 수 있습니까?

감사

sql = @"SELECT a.License, a.ClassID, a.CurrentlyIn, a.TotalScans " + 
    @"FROM Attendance a " + 
    @"WHERE a.License = " + myScan.LicenseInt + 
     @" AND a.ClassID = " + myScan.ClassID + ";"; 
_parent.StatusOutput(sql); 

cmdDB = new OleDbCommand(sql, cnDB); 
try 
{ 
    //cnDB.Open(); 

    drDB = cmdDB.ExecuteReader(); 
    if (drDB.HasRows) 
    { 
     _parent.StatusOutput("Data reader has no rows"); 
    } 
    else 
    { 
     _parent.StatusOutput("Data reader has rows."); 
     drDB.Read(); 
     _parent.StatusOutput(drDB["License"].ToString() + ", " + drDB["ClassID"].ToString()); 
    } 

이 우리는 간다. 내 혼란을 게시하는 방법에 대한 죄송합니다. 샘플 코드에서

+4

이 동작을 보여주는 코드 조각을 포함 할 수 있습니까? – EkoostikMartin

+0

.Net 버전 및 프로필도 포함하십시오. – Amy

+0

행이 없어도 HasRows가 true로 설정된 쿼리를 생성 할 수 있습니다. 쿼리에 따라 달라집니다. 그것은 당신의 코드에서 다른 것일 수 있습니다. @EkoostikMartin이 말했듯이, 이것을 생성하는 코드 스 니펫을 게시하십시오. – Pete

답변

0

가 여기에 독자가 행이있는 경우 다음 오류를 출력으로

와 독자가 행이없는 경우 그것이 가지고 읽고 예외를

스왑을 던졌습니다 인쇄 :

if (drDB.HasRows) 
     { 
      _parent.StatusOutput("Data reader has rows."); 
      drDB.Read(); 
      _parent.StatusOutput(drDB["License"].ToString() + ", " + drDB["ClassID"].ToString()); 

        } 
     else 
     { 
      _parent.StatusOutput("Data reader has no rows"); 

     } 
+0

이 코드가 실행되면 SQL 문이 행을 반환하지 않지만 출력 문에 "데이터 판독기에 행이 있습니다."즉, 행이 없어도 drDB.HasRows가 true를 반환한다는 것을 의미합니다. 출력 구문을 실제 조건으로 설정하여 데이터를 제공할지 여부를 확인하지만 데이터가없는 상태로 돌아옵니다. –

+0

벙어리, 벙어리, 벙어리 실수 실수를해서 죄송합니다. 다시 한번 말하지만, 급하게 코드를 작성하지 마십시오. 피곤할 때 감사합니다! –

관련 문제