1

我正在循环访问我的数据库以显示与球员相关的联赛列表。如果玩家不是任何联赛的成员,则会显示一条消息告诉他们。

这是代码

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();

问题是数据阅读器没有显示查询中的第一个联赛。

知道这是为什么吗?

4

2 回答 2

10

改变

if (dReader.Read()){  

if (dReader.HasRows){

通过调用Read()inif语句,您实际上是在读取第一行数据。Read()在语句中再次调用while,会跳过第一个读取行。

您可以使用HasRows属性来检查阅读器是否包含任何数据。

于 2013-03-16T11:25:09.110 回答
1

if 语句正在读取第一条记录,因此当您点击 while 语句时,它已移至第二条结果。

于 2013-03-16T11:26:55.010 回答