2013-02-20 51 views
0

我能得到其他查詢工作,但我不能讓這個查詢在Visual Studio 工作假設的ConnectionString聲明此功能之外SQL查詢一樣在Visual Studio

公衆的DataTable GetDtSearch(字符串searchname) {

 string sql = "SELECT * FROM table WHERE (file_name LIKE @searchname)"; 


     DataTable dt = new DataTable(); 

     using (MySqlConnection con = new MySqlConnection(ConnectionString)) 
     { 

      try 
      { 
       con.Open(); 
      } 
      catch { return dt; } 

      using (MySqlCommand cmd = new MySqlCommand(sql, con)) 
      { 
       cmd.Parameters.Add(@searchname,"%"+ searchname+"%"); 
       using (MySqlDataAdapter adp = new MySqlDataAdapter(cmd)) 
       { 
        try 
        { 
         adp.Fill(dt); 
        } 
        catch 
        { 

        } 

       } 

      } 
      con.Close(); 
     } 




     return dt; 
    } 
+1

字符串「無法使此查詢工作」不是任何IDE中的內置錯誤消息。 – 2013-02-20 05:46:47

+1

一個空的catch塊不會幫你太多,而是捕獲'SqlException'並查看發生了什麼 – Habib 2013-02-20 05:52:17

回答

1
 cmd.Parameters.Add("@searchname","%"+ searchname+"%"); 

用引號括起來的參數名稱(第一個參數)。

P.S.我已經提出了你的低調問題,但是downvoter是正確的 - 你需要說出發生了什麼 - 一個錯誤信息,或者「沒有結果被返回」,或者比「不能得到這個查詢更精確」工作」。

P.P.S.此外,使用AddWithValue方法,因爲Add(字符串,對象)簽名已被棄用。

0

將引號放在搜索參數的周圍。 -
SELECT * FROM table WHERE (file_name LIKE '@searchname')

+0

返回一個空數據表 – user1663380 2013-02-25 07:14:35

+0

在您認爲代碼錯誤之前,直接在Management Studio中的查詢中嘗試它。 'select * from table where'like content%''for me :) :) – 2013-02-25 12:58:20