如何在C#中使用SQL select查询处理多行?

时间:2014-03-26 12:48:09

标签: c# sql winforms

我有一个简单的C#窗体,我有6个文本框。现在我有一个返回3行的SQL查询(它总是返回3行 - 查询从联结表和另一个表中获取数据),每行有2列(名称和电子邮件)。我想要做的是使用sql查询的结果填充这6个文本框,如Name 1& Email 1应获得row 1Name 2&的价值Email 2应该获得row 2等等的值。

我在这里和那里搜索过但我还没有找到解决方案所以请帮帮我。我知道我需要在这里应用一些循环,但我无法在这里找到逻辑。

图片供参考:

SQL查询结果:

enter image description here

C#Win Form:

enter image description here

代码(显然不是这样做的方式):

        SqlDataReader rdr = null;
        SqlConnection con = null;
        SqlCommand cmd = null;
        String Name;
        String Email;
        string ConnectionString = "// my connection string...";
        con = new SqlConnection(ConnectionString);
        con.Open();
        string CommandText = "//sql query goes here";
         cmd = new SqlCommand(CommandText);
         cmd.Connection = con;
        rdr = cmd.ExecuteReader();
        while(rdr.Read())
          {
                  Name = rdr["Name"].ToString(); 
                 Email = rdr["Email"].ToString();
          }

        con.Close();

2 个答案:

答案 0 :(得分:1)

您可以将查询结果放入DataTable中。稍后您可以设置文本框以在DataTable的每一行上显示数据。

答案 1 :(得分:1)

创建两个文本框数组

 TextBox[] names = new TextBox[] {txtName1, txtName2, txtName3};     
 TextBox[] mails = new TextBox[] {txtMail1, txtMail2, txtMail3};

现在为您的桌子检索阅读器后

int idx = 0;
while(reader.Read() && idx < names.Length)
{
    names[idx].Text = reader.GetString(0);
    mails[idx].Text = reader.GetString(1);
    idx++;
}

当然,此解决方案受到您的声明的严格限制:它将始终返回3行