2016-12-06 91 views
0

接下來我想根據輸入的任何值過濾下拉框。如果一個單詞是說"16 cat123"通常用戶將不得不開始輸入數字"16"或數字"1"爲它顯示結果。相反,如果用戶應該通過輸入"cat123"開始,那麼它仍會顯示原始項目"16 cat123"。我怎樣才能做到這一點?我知道這是LIKE條款與我的SELECT的組合,但目前它仍以相同的方式運行,只是通過輸入的第一個字母發回值。這是我當前的查詢:LIKE子句沒有像預期的那樣返回值

string query = "SELECT * FROM dbo.Carimed WHERE Item_Description LIKE '%" + comboBox3.Text.Replace("'", "''") + "%'; "; 

我在想什麼?

private void comboBox3_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     try 
     { 

      string connectionString = "Data Source=CMDLAP126;Initial Catalog=Carimed_Inventory;User ID = sa; Password = 123456;"; 
      string query = " "SELECT * FROM dbo.Carimed WHERE Item_Description LIKE '%" + comboBox3.Text.Replace("'", "''") + "%' "; 
      SqlConnection con = new SqlConnection(connectionString); 
      con.Open(); 
      SqlCommand cmd = new SqlCommand(query, con); 
      SqlDataReader dr = cmd.ExecuteReader(); 

      while (dr.Read()) 
      { 
       string cari_code = dr.GetString(dr.GetOrdinal("item#")); 
       textBox2.Text = cari_code; 

      } 
     } 
     catch (Exception ex) 
     { 

      MessageBox.Show(ex.ToString()); 
     } 

    } 
+0

您的邏輯在這裏看起來是正確的,''LIKE'%value%''是做「包含」搜索的正確語法,您可能希望將更完整的示例放在一起以顯示問題。 – Guvante

+5

參數化你的查詢,或者一個聰明的輸入(SQL注入)可能會破壞你的數據庫。 –

+0

我從[這裏](https://www.codeproject.com/tips/631196/combobox-with-suggest-ability-based-on-substring-s)使用該用戶的指南找到了解決辦法。 什麼由作者完成是覆蓋默認的組合框設置在WinForms中。我只是找到了一種將其綁定到我的代碼並啓動並運行的方法。希望這有助於未來的某個人。 – Jevon

回答

0

試試這個:

全功能更新

string query = "SELECT * FROM dbo.Carimed WHERE Item_Description LIKE '" + comboBox3.Text.Replace("'", "''") + "%'; "; 
0
string query = "SELECT * FROM dbo.Carimed WHERE Item_Description LIKE '%" + comboBox3.Text.Replace("'", "''") + "%' "; 

也許分號去掉那是你的查詢字符串的一部分?

+0

這是我在調試時嘗試的。同樣的問題。感謝所有相同的建議 – Jevon

+0

一切看起來都正確。檢查comboBox2.Text的值是你期望的沒有額外的字符。 –

0

除了查詢中額外的;,它看起來是正確的。如果適用於您的應用程序,您可能需要修剪內容(comboBox3.Text.Trim()),以便"cat123 "匹配"16 cat123"。正如評論中所建議的那樣,您應該參數化您的查詢。

+0

已經從數據庫端修改了它,所以沒有問題,並且知道它應該被參數化,僅用於臨時練習 – Jevon

+0

您的意思是數據庫中的數據是否被修剪?或者用戶輸入被修剪?例如,如果我輸入「cat123」,你的查詢最終將執行SELECT ... FROM .. WHERE Item_Description LIKE'%cat123%'? –

+0

是的,但如果我沒有,我嘗試了你的建議,仍然沒有運氣 – Jevon

相關問題