我正在尝试解决一个项目,我从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();
}
}
}
答案 0 :(得分:1)
每次找到匹配项时,您都会覆盖txtResults.Text。你可以改为追加:
txtResults.Text += respName;
或者你可能只是将匹配列表保留在列表中,然后将它们加入到更清晰的内容中。你可以把它放在方法的顶部,你要声明其他变量:
List<string> matches = new List<string>();
然后,您只需执行以下操作:
,而不是设置txtResults.Textmatches.Add(respName);
一旦你完成了SqlConnection,在你的方法结束时,你可以将它们加入到一个漂亮的字符串中:
txtResults.Text = string.Join(", ", matches);
答案 1 :(得分:0)
在您的while语句中,每次找到匹配项时,都会覆盖以前的匹配项:
txtResults.Text = respName;
也许你想创建一个以逗号分隔的列表:
txtResults.Text += respName + ", ";
然后修剪最后一个逗号