2012-03-07 126 views
3

大家好,祝大家好日子。我有一個關於sql/c#語句的小問題,我找不出爲什麼我的代碼不工作。C#sql語句不起作用

if (Combo_List.Text == "What") 
{ 
    listView1.Items.Clear(); 
    myds.Clear(); 
    mydaEvents.SelectCommand = myconn.CreateCommand(); 
    mydaEvents.SelectCommand.CommandText = "select * from Eventstbl where What like '@what%'"; 
    mydaEvents.SelectCommand.CommandType = CommandType.Text; 
    mydaEvents.SelectCommand.Parameters.Add("@what", SqlDbType.NVarChar, 2000, "What").Value = text_Search.Text; 
    mydaEvents.Fill(myds, "Eventstbl"); 

    foreach (DataRow item in myds.Tables["Eventstbl"].Rows) 
    { 
     ListViewItem items = new ListViewItem(item["EventsID"].ToString()); 
     items.SubItems.Add(item["What"].ToString()); 
     listView1.Items.Add(items); 
    } 
} 

什麼%將無法正常工作的@但是當我把「A%」,在信中開始顯示在我的ListView1的所有項目。我不知道如何解決這個問題。請幫幫我。先謝謝你。

+0

嘗試「select ... where @what +'%'」 – Carsten 2012-03-07 16:45:19

+0

我看不出代碼本身有什麼問題。我沒有看到問題。我也沒有看到問題的解釋。 – 2012-03-07 16:47:18

+0

我忘了說,當我使用'@ what%'時,我輸入的字符或數字沒有顯示在我的列表視圖中,但是當我使用'a%'時,從列表視圖開始的所有數據顯示 – Sephiroth111 2012-03-07 16:49:21

回答

4

試試這個:

mydaEvents.SelectCommand.CommandText = "select * from Eventstbl where What like @what + '%'"; 

,引號裏的文字都將被視爲...文本 - 你希望你的參數被解釋爲它的字符串值,所以你必須把它搬走。

+0

感謝您的幫助和一個小的解釋。這是我第一次使用像聲明。感謝您幫助我,它現在的作品:) – Sephiroth111 2012-03-07 16:54:35

4

我猜問題是'@what%'被視爲文字而不是被您的參數的值取代。

改爲嘗試做@what + '%'

+0

謝謝你幫助我現在的作品:) – Sephiroth111 2012-03-07 16:55:08