0

SQL データベースからデータの列を取得し、そのデータをリストボックス内の値と比較するプロジェクトに取り組もうとしています。これまでのところ、比較を見つけていますが、リストボックスに複数の一致があっても、1 つの値のみを返しています。

ここで何が間違っていますか?誰でも提供できるヘルプをありがとう。

    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<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 に答える