2013-03-16 91 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 2013-03-16 11:28:17

+0

如果(dReader.Read())能夠正常工作,不需要寫這個,如果沒有數據,它不會在while循環中輸入。 – Ansari 2013-03-16 11:29:55

回答

6

變化

if (dReader.Read()){ 

if (dReader.HasRows){ 

通過調用if聲明Read(),你實際上是在讀取數據的第一行。在while語句中再次調用Read(),跳過第一個讀取行。

您可以使用HasRows屬性來檢查閱讀器是否包含任何數據。

+0

完美的謝謝! – JackofAll 2013-03-16 11:32:13

1

if語句正在讀取第一條記錄,所以當您敲入while語句時它已經轉到第二條結果。