如何使用sql将多个值返回到标签中

jav*_*ute 0 c# sql-server asp.net

有一个类似的问题在stackoverflow上没有答案,但我相信我非常接近解决它.但基本上,我的sql语句返回多个值,但标签中只显示一个值,而它应该是4或5个值.

  protected void btnPopulate_Click(object sender, EventArgs e)
    {

        SqlConnection con = new SqlConnection(strings.settings.connectionString);
        SqlCommand command = new SqlCommand("SELECT ID FROM dbo.MDRMASTER WHERE MASTERPID = @MASTERPID",con);
       command.Parameters.Add("@MASTERPID", SqlDbType.NVarChar).Value = txtMASTERID.Text;
        con.Open();
        SqlDataReader dr = command.ExecuteReader();
        while (dr.Read()) 
        {
            string ID = dr["ID"].ToString();
            lblIDs.Text = ID;
        }
        con.Close();
    }
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.谢谢!

Pau*_*sik 5

每次循环都会覆盖标签的文本.你可以简单地改变:

lblIDs.Text = ID;
Run Code Online (Sandbox Code Playgroud)

至:

lblIDs.Text += ID + " ";
Run Code Online (Sandbox Code Playgroud)

并且基本上用空格分隔的列表填充标签.

此外,作为一般的最佳实践编程提示:在此示例中,您非常紧密地将UI代码耦合到数据访问代码.您应该查看MVC,Presenter和其他几个选项以避免紧密耦合.这是一篇关于初学者文章.

  • 但是请确保在开始循环之前执行`lblIDs.Text = string.Empty`以清除任何先前的值. (3认同)

emp*_*mpi 5

你的意思是这样的?

var ids = List<string>();
while (dr.Read()) 
{
    ids.Add(dr["ID"].ToString());            
}
lblIDs.Text = String.Join(", ", ids);
Run Code Online (Sandbox Code Playgroud)