使用 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是上面声明的SqlDataReadercmdSqlCommand

此代码仅在标签中向我显示一封电子邮件,我想我误解了SqlDataReader的功能......

如果有人有任何想法,请帮忙?!

使用 asp.net 从 sql 数据库的列中获取所有行

您正在阅读循环中的所有电子邮件,并将电子邮件放入标签。

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 自动处置昂贵的资源。