2013-03-16 74 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语句时它已经转到第二条结果。