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

Mah*_*ine 2 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()
}
Run Code Online (Sandbox Code Playgroud)

我写了这段代码,但问题是虽然声明一直都是真的!如何使用while转发器环读取所有读卡器信息?

Ant*_*ram 7

最简单的想法是简单地让Read()循环条件.

while (reader.Read())
{
     // grab data
}
Run Code Online (Sandbox Code Playgroud)


p.c*_*ell 7

使用.Read()你的方法while.

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

如果有更多行,则返回true; 否则是假的.

while(reader.Read())
{
   ddl.Items.add(reader["name"].ToString());
}
Run Code Online (Sandbox Code Playgroud)

或者,将您的下拉列表数据绑定到您的SqlDataReader,并且不要手动迭代它.

ddl.DataSource = reader;
ddl.DataTextField = "name";
ddl.DataValueField = "name";
ddl.DataBind();
Run Code Online (Sandbox Code Playgroud)