2013-03-16 1 views
1

Я просматриваю свою базу данных, чтобы отобразить список лиг, с которыми связан игрок. Если игрок не является членом каких-либо лиг, тогда появляется сообщение, чтобы сообщить им.Datareader не отображает первую строку

Вот код

if (dReader.Read()) 
{   
    while (dReader.Read()) 
    { 
     usersLeagues.Text += "<li class=\"li-myLeagues\"><a href=\"leagueDetails.aspx?leagueID=" + (dReader["leagueID"].ToString()) + "\">" + (dReader["leagueName"].ToString()) + "</a></li>"; 
    } 
} 
else 
{ 
    usersLeagues.Text = "You are currently not a part of any leagues"; 
} 
dReader.Close(); 
conn.Close(); 

Вопрос заключается в том, что для считывания данных не отображается в первую лигу в запросе.

Любая идея, почему это так?

+0

Хотя это чисто догадка, мне нужно будет проверить документацию для метода, я думаю, вы теряете первую строку с вашим «if» условным. Вероятно, вам понадобится другой метод, чтобы узнать, были ли данные возвращены. – pwdst

+0

Удалите это, если (dReader.Read()) он будет работать нормально, нет необходимости писать это, если нет данных, он не будет вводить цикл while. – Ansari

ответ

6

Изменить

if (dReader.Read()){ 

в

if (dReader.HasRows){ 

Называя Read() в if заявлении, вы на самом деле читаете первую строку данных. Вызов Read() снова в операторе while, пропустит первую прочитанную строку.

Свойство HasRows можно использовать, чтобы проверить, содержит ли он данные.

+0

Прекрасное спасибо! – JackofAll

1

Оператор if считывает первую запись, поэтому, когда вы нажимаете оператор while, он переместился на второй результат.

 Смежные вопросы

  • Нет связанных вопросов^_^