C# 在列表框中显示SQL结果

C# 在列表框中显示SQL结果,c#,sql,.net,C#,Sql,.net,我想在列表框中显示查询。以下是我要做的: private void PopulatePeople() { string query = "SELECT Name FROM People WHERE KnownFrom = KSOK";//@KnownFrom"; using (connection = new SqlConnection(connectionString)) using (SqlCommand command = new SqlCommand(quer

我想在列表框中显示查询。以下是我要做的:

private void PopulatePeople()
{

    string query = "SELECT Name FROM People WHERE KnownFrom = KSOK";//@KnownFrom";

    using (connection = new SqlConnection(connectionString))
    using (SqlCommand command = new SqlCommand(query, connection))
    using (SqlDataAdapter adapter = new SqlDataAdapter(command))
    {
        //command.Parameters.AddWithValue("@KnownFrom", listBox1.SelectedItem);

        DataTable PeopleDT = new DataTable();
        adapter.Fill(PeopleDT);

        listBox2.DisplayMember = "Name";//+"Surname";
        //listBox2.ValueMember = "Id";
        listBox2.DataSource = PeopleDT;
    }
}

此时,它表示没有列
KSOK
。我做错了什么?

如果要搜索的字符串是
KSOK
,则需要引用它:

string query = "SELECT Name FROM People WHERE KnownFrom = 'KSOK'"
                                                       // ^    ^ quotes

如果
KSOK
是您正在搜索的字符串,则需要引用它:

string query = "SELECT Name FROM People WHERE KnownFrom = 'KSOK'"
                                                       // ^    ^ quotes

如果您想使用参数,就像您注释掉的那样,可以执行以下操作(使用ListBox2.SelectedItem.ToString()从UI获取值):

然后,将@变量添加到KSOK的查询字符串中:

string query = "SELECT Name FROM People WHERE KnownFrom = @KnownFrom";

如果您想使用参数,就像您注释掉的那样,可以执行以下操作(使用ListBox2.SelectedItem.ToString()从UI获取值):

然后,将@变量添加到KSOK的查询字符串中:

string query = "SELECT Name FROM People WHERE KnownFrom = @KnownFrom";
尝试改变

string query = "SELECT Name FROM People WHERE KnownFrom = KSOK";

当查询中包含字符串文字时,它们应该用单引号括起来。

尝试更改

string query = "SELECT Name FROM People WHERE KnownFrom = KSOK";


当查询中包含字符串文字时,它们应该用单引号括起来。

KSOK显然是它们要搜索的变量名的值应该是
@KnownFrom
。编辑以反映KSOK是搜索字符串。谢谢。是的,KSOK是字符串,但我想从列表框中获取该字符串。但是listBox2.SelectedValue不起作用,这是因为SelectedValue不是框中的文本。您在框中看到的文本来自ListBox2.SelectedItem.ToString()。我会相应地更新答案。是的,我刚刚发现了关于ToString的事。现在它没有回旋,但我猜中间的某个地方数据会被弄乱或者什么的。没有显示任何内容。哦,是的,它的列表框是1.SelectedItem(对不起)。我在listBox1中显示distinkt KnownFrom,我想在listBox2中显示所选KnownFrom的数据。显然,KSOK是他们要搜索的值,变量名应该是
@KnownFrom
。编辑以反映KSOK是搜索字符串。谢谢。是的,KSOK是字符串,但我想从列表框中获取该字符串。但是listBox2.SelectedValue不起作用,这是因为SelectedValue不是框中的文本。您在框中看到的文本来自ListBox2.SelectedItem.ToString()。我会相应地更新答案。是的,我刚刚发现了关于ToString的事。现在它没有回旋,但我猜中间的某个地方数据会被弄乱或者什么的。没有显示任何内容。哦,是的,它的列表框是1.SelectedItem(对不起)。我在listBox1中显示distinkt KnownFrom,并希望在listBox2中显示具有所选KnownFrom的数据。您可能最终需要向查询添加Id。例如“选择PeopleId作为Id,从People中选择Name…”您最终可能需要向查询中添加一个Id。比如“选择PeopleId作为Id,从人物中选择姓名…”