使用 asp.net 从 sql 数据库的列中获取所有行
本文关键字:获取 net asp sql 数据库 使用 | 更新日期: 2023-09-27 18:35:24
我有问题...我想在标签中显示我在 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
的功能......
如果有人有任何想法,请帮忙?!
您正在阅读循环中的所有电子邮件,并将电子邮件放入标签。
while(dr.HasRows)
{
dr.Read();
label.Text = dr[0].ToString() + "<br />";
}
每次运行循环时,您都会覆盖标签值,因此最终将显示最后一封电子邮件。这是错误。
使用 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 自动处置昂贵的资源。