2015-08-20 72 views
0

我想在列表框中显示查询。以下是我不得不远:在列表框中显示SQL结果

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。我究竟做错了什么?

回答

4

如果KSOK是你所搜索的字符串,那么你需要引用它:

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

您可能需要最终为查询添加一个ID。像“Select PeopleId as Id,Name FROM People ...” – RetroCoder

1

如果你想使用的参数,如你已经注释掉,你可以做以下(使用ListBox2 .SelectedItem.ToString()来从UI的值):

command.Parameters.AddWithValue("@KnownFrom", ListBox2.SelectedItem.ToString()); //Edited to use value from UI. 

随后,@变量添加到您的查询字符串KSOK:

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

KSOK显然是他们想要搜索的值,变量名应该是'@ KnownFrom'。 –

+0

编辑以反映KSOK是搜索字符串。谢谢。 – Vahlkron

+0

是的,KSOK是字符串,但我想从列表框中获取该字符串。 但listBox2.SelectedValue不起作用。 – tsobw

0

尝试改变,

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

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

当你有字符串文字作为查询的一部分,他们应该用单引号'包裹。