使用asp.net从sql db的列中获取所有行?

时间:2014-12-28 13:45:27

标签: c# asp.net

我遇到了问题...我想在标签中显示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的功能......

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

2 个答案:

答案 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 />";   
    }

每次循环运行都会覆盖标签值,因此最后会显示最后一封电子邮件。这就是错误。