首页 > 解决方案 > C# 使用查询中的多行填充标签

问题描述

我有几行要添加到我的 winform 中的标签中。我的问题是它只显示一行。应如何修改代码以显示所有行?我只需要它的第一部分'reader.HasRows',对于'else'部分它总是一行。程序会检查是否使用了外部 ID 或内部 ID。

我的代码是:

private void btnCstID_Click(object sender, EventArgs e)
{
      string groupId = textCstID.Text.Trim();
      string queryStringInt = ("SELECT [Data_Group],[Internal_Customer_ID] FROM [CS_RT_CUSTOMER_DETAILS] WHERE [Customer_ID] ='" + groupId + "' and [Active] = 'Y'");
      string queryStringExt = ("SELECT left([IP_ID],10) FROM [CS_RT_CUSTOMER_DETAILS] WHERE left([IP_ID],10) ='" + groupId + "' and [Active] = 'Y'");
      string connString = @"..";

      using (SqlConnection connection = new SqlConnection(connString))
      {
            using (SqlCommand sqlCommand1 = new SqlCommand(queryStringInt, connection))
            {
                  connection.Open();
                  SqlDataReader reader = sqlCommand1.ExecuteReader();

                  if (reader.HasRows)
                  {
                      while (reader.Read())
                      {
                          description2.Text = String.Format("Customer ID to use: {0} - {1}", reader.GetString(0), reader.GetString(1));

                       }
                   }
                   else
                   {
                       using (SqlCommand sqlCommand2 = new SqlCommand(queryStringExt, connection))
                       {
                            reader.Close();
                            object reader2 = sqlCommand2.ExecuteScalar();
                            {
                                description2.Text = String.Format("Customer ID to use: {0}", reader2);
                            }
                        }
                   }
             }
      }

}

标签: c#sql-serverwinformslabel

解决方案


您可以使用 List<> 来存储返回的行,然后根据需要连接/输出它们。或者因为这只是一个要连接的简单字符串,所以您可以使用这样的 StringBuilder;

....
StringBuilder sb = new StringBuilder();
while (reader.Read())
{
    sb.Append(String.Format("Customer ID to use: {0} - {1};", reader.GetString(0), reader.GetString(1)));
}
description2.Text = sb.ToString();
....

推荐阅读