2015-08-20 70 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'"; 

當你有字符串文字作爲查詢的一部分,他們應該用單引號'包裹。