我遇到了问题...我想在标签中显示SQL Server表中的所有电子邮件。
以下是代码:
protected void button_Click(object sender, EventArgs e)
{
connection.Open();
cmd = new SqlCommand("select Email from Clients",connection);
cmd.ExecuteNonQuery();
dr = cmd.ExecuteReader();
while(dr.HasRows)
{
dr.Read();
label.Text = dr[0].ToString() + "<br />";
}
dr.Close();
connection.Close();
}
dr
是上面声明的SqlDataReader
,cmd
是SqlCommand
。
此代码只显示标签中的电子邮件,我想我误解了SqlDataReader
的功能......
如果有人有任何想法,请帮忙吗?!
答案 0 :(得分:0)
使用StringBuilder类并更改您的代码: -
StringBuilder sb = new StringBuilder();
while(dr.Read())
{
sb.Append(dr[0].ToString() + "<br />");
}
//Finally add it to your label
label.Text = sb.ToString();
dr.Read()
将遍历SqlDataReader
对象中的结果。除此之外,不需要这一行 - cmd.ExecuteNonQuery();
将其从代码中删除,并使用using自动处理昂贵的资源。
答案 1 :(得分:0)
您正在阅读循环中的所有电子邮件,并且您正在将电子邮件发送到标签。
while(dr.HasRows)
{
dr.Read();
label.Text = dr[0].ToString() + "<br />";
}
每次循环运行都会覆盖标签值,因此最后会显示最后一封电子邮件。这就是错误。