【问题标题】:Datareader not displaying first row数据阅读器不显示第一行
【发布时间】:2013-03-16 11:21:32
【问题描述】:

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

这里是代码

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

问题在于数据读取器未显示查询中的第一个联赛。

知道这是为什么吗?

【问题讨论】:

  • 虽然这纯粹是一个猜测,但我必须检查该方法的文档,我想你的“if”条件会丢失第一行。您可能需要另一种方法来查看是否返回了数据。
  • 去掉这个 if (dReader.Read()) 就可以正常工作了,不用写这个,如果没有数据就不会进入while循环。

标签: c# asp.net sqldatareader datareader


【解决方案1】:

改变

if (dReader.Read()){  

if (dReader.HasRows){

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-05-16
      • 1970-01-01
      • 2012-11-08
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      相关资源
      最近更新 更多