如何在下一行c#中的多行文本框中显示查询结果

时间:2017-11-03 18:17:23

标签: c# sqldatareader

我正在尝试在多行文本框中显示我的数据,如此

col1  

result

col2

result

col3

result

但我无法做到。这是我的代码

SqlConnection sq = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ConnectionString);
SqlCommand cmd = new SqlCommand("Select * from table",sq);
sq.Open();

SqlDataReader rdr = cmd.ExecuteReader();

while (rdr.Read())
{
   // pkg_details.Text = pkg_details.Text = rdr[0].ToString();
    pkg_details.Text = rdr[0].ToString();
    pkg_details.Text = rdr[1].ToString();
    pkg_details.Text = rdr[2].ToString();
}

此代码仅显示一列结果。我如何获得所有列?

2 个答案:

答案 0 :(得分:0)

您当前代码的问题在于您为每列覆盖Text,因此只剩下最后一列。

while (rdr.Read())
{
    pkg_details.Text += string.Join(Environment.NewLine, rdr.Take(3).Select(ToString));
}

如果您想格式化列,请尝试

while (rdr.Read())
{
    pkg_details.Text += string.Join(Environment.NewLine, rdr.Take(3)
                  .Select((x, i) => $"Column {i}{Environment.NewLine}{x.ToString()}"));
}

但我建议您使用更合适的控件视图来显示内容,而不是Mutiline文本框。列表视图之类的东西。

答案 1 :(得分:0)

您可以在此代码中对代码进行更正:

        SqlCommand cmd = new SqlCommand("Select * from table",sq);
        sq.Open();

       SqlDataReader rdr = cmd.ExecuteReader();

       while (rdr.Read())
       {
          // pkg_details.Text = pkg_details.Text = rdr[0].ToString();
           pkg_details.Text += rdr[0].ToString() + Environment.NewLine;
           pkg_details.Text += rdr[1].ToString() + Environment.NewLine;
           pkg_details.Text += rdr[2].ToString() + Environment.NewLine;
       }