0

我正在尝试解决一个项目,我从 SQL 数据库中提取一列数据并将数据与列表框中的值进行比较。到目前为止,它正在寻找一个比较,但只返回一个值,即使列表框中有多个匹配项。

我在这里做错了什么?感谢任何人都可以提供的任何帮助。

    private void btnDoAudit_Click(object sender, EventArgs e)
    {
        string respName = "something";
        SqlDataReader reader = null;

        using (SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=XXXX;Integrated Security=True;;User Instance=True"))
        {
            using (SqlCommand command = new SqlCommand("SELECT [Responsibility_Name] FROM [tblResponsibility] WHERE [Sensitive_Transaction]='TRUE'", conn))
            {
                conn.Open();

                reader = command.ExecuteReader();

                while (reader.Read())
                {
                    respName = (string)reader["Responsibility_Name"];



                        if (lstResponsibilities.Items.Contains(respName) == true)
                        {
                          txtResults.Text = respName;
                        }

                }
                reader.Close();
                conn.Close();
            }
        }
    }
4

2 回答 2

1

每次找到匹配项时,您都会覆盖 txtResults.Text。您可以改为附加:

txtResults.Text += respName;

或者,也许您更愿意将匹配列表保留在 List 中,然后将它们加入到更清晰的内容中。您可以将其放在声明其他变量的方法顶部附近:

List<string> matches = new List<string>();

然后,您无需设置 txtResults.Text,只需执行以下操作:

matches.Add(respName);

一旦你完成了 SqlConnection,在你的方法结束时,你可以将它们连接成一个漂亮的字符串:

txtResults.Text = string.Join(", ", matches);
于 2013-05-16T01:00:00.577 回答
0

看起来在您的 while 语句中,每次找到匹配项时,都会覆盖以前的匹配项:

txtResults.Text = respName;

也许您想创建一个逗号分隔的列表:

txtResults.Text += respName + ", ";

然后修剪最后一个逗号

于 2013-05-16T01:02:21.437 回答