【问题标题】:how can i know when i reach end of a datareader?我怎么知道我何时到达数据读取器的末尾?
【发布时间】:2011-09-30 18:18:34
【问题描述】:
cmd.CommandText = "select name from Tbl_Shahr_No";
SqlDataReader reader = null;
reader = cmd.ExecuteReader();
reader.Read();

while(reader.HasRows)
{
    ddl.Items.add(reader["name"].tostring());
    reader.read()
}

我编写了这段代码,但问题是 while 语句始终为真! 如何使用while 或中继环读取所有阅读器信息?

【问题讨论】:

    标签: c# database sqldatareader


    【解决方案1】:

    最简单的想法是让Read() 成为循环条件。

    while (reader.Read())
    {
         // grab data
    }
    

    【讨论】:

      【解决方案2】:

      在您的while 中使用.Read() 方法。

      它将 SqlDataReader 推进到下一条记录。

      如果有更多行,则返回 true;否则为假。

      while(reader.Read())
      {
         ddl.Items.add(reader["name"].ToString());
      }
      

      或者,将您的下拉列表数据绑定到您的 SqlDataReader,并且不要费心手动对其进行迭代。

      ddl.DataSource = reader;
      ddl.DataTextField = "name";
      ddl.DataValueField = "name";
      ddl.DataBind();
      

      【讨论】:

        【解决方案3】:

        IDataReader.@987654321@ 返回一个布尔值。将其用作您的 while 循环的条件:

        reader = cmd.ExecuteReader();            
        while(reader.Read())
        {
            ddl.Items.add(reader["name"].tostring());
        }
        

        【讨论】:

          【解决方案4】:

          当 reader.Read() 返回 false 时,没有更多的行,所以使用

          while(reader.Read())
          {
              //do some thing here
          }
          

          它将循环直到没有更多的行!

          但如果数据读取器有多个数据集,则使用以下数据集

          while(reader.Read())
          {
              //First dataset
              //do some thing here
          }
          reader.NextResult();
          while(reader.Read())
          {
              //Second dataset
              //do some thing here
          }
          ......
          

          【讨论】:

            【解决方案5】:
            while (reader.read())
            {
               // do your thing here for each row read
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-12-15
              • 1970-01-01
              • 1970-01-01
              • 2010-09-08
              • 1970-01-01
              • 1970-01-01
              • 2020-09-15
              相关资源
              最近更新 更多