我怎么知道何时到达datareader的末端?

时间:2011-09-30 18:18:34

标签: c# database sqldatareader

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或转发器环读取所有读者信息?

5 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:7)

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

答案 2 :(得分:3)

IDataReader.Read()返回一个bool。将它用作while循环的条件:

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

答案 3 :(得分:2)

当reader.Read()返回false时,不再有行,所以使用

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

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

但是如果datareader有多个数据集,请使用以下

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

答案 4 :(得分:1)

while (reader.read())
{
   // do your thing here for each row read
}