2013-03-29 79 views
1

目前我有一個文本框和一個按鈕,我可以閱讀文本罰款和它搜索說「蘋果」添加「%」字符串爲SQL搜索

的DATABSE,但如果有一個結果稱爲「紅蘋果」它不會返回它。

我已經試過

string getTheBox = (this.searchBox.Text); 

string request = "%" + getTheBox + "%"; 

但它似乎並不奏效。這與「請求」是字符串變量。

編輯以包括SQL請求部分

SqlDataSource2.SelectCommand = "SELECT Recipe_Name FROM New_Recipe WHERE  [ingredient1][email protected] 

    SqlDataSource2.SelectParameters.Add(newParameter("request",System.TypeCode.String)); 
     SqlDataSource2.SelectParameters["request"].DefaultValue = request; 
+3

您應該顯示您的數據庫訪問代碼,因爲這是真正重要的部分。 –

+0

你可以包含*使用*'request'的代碼嗎? – yoozer8

+0

請閱讀一次:http://www.techonthenet.com/sql/like.php –

回答

6

的百分比增加是正確的,但你必須改變你的SQL查詢

您需要使用LIKE operator

例如QUERY可能是

"SELECT Recipe_Name FROM New_Recipe WHERE ingredient1 LIKE @request" 

和您的代碼

string request = "%" + getTheBox + "%"; 
    string sqlText = "SELECT Recipe_Name FROM New_Recipe WHERE ingredient1 LIKE @request"; 
    using(SqlConnection cn = GetSqlConnection()) 
    { 
     cn.Open(); 
     using(SqlCommand cmd = new SqlCommand(sqlText, cm); 
     { 
      cmd.Parameters.AddWithValue("@request", request); 
      SqlDataReader dr = cmd.ExecuteReader(); 
      while(dr.Read()) 
      { 
      ...... 
      } 
     } 
    } 
+0

就是這樣。簡單的錯誤謝謝。 –

1

這是一個可怕的想法,因爲任何人都可以運行SQL注入。你可能想要類似於 Sqlcommand.Prepare

因爲它可以讓你設置更安全的爭論。並有兩個字。

3

請發佈您的SQL查詢。也許你需要更改WHERE FruitName = @FruitNameWHERE FruitName LIKE @FruitName

0

我通常有幾個幫助函數添加到我的查詢取決於我需要做什麼。

public List<T> GetRecipesThatContain<T>(string ingredient) 
{ 
    const string commandText = "SELECT Recipe_Name FROM New_Recipe WHERE ingredient1 LIKE @SearchTerm"; 
    var searchTerm = Contains(ingredient); 

    using(var connection = GetSqlConnection()) 
    { 
     connection.Open(); 

     using(var command = new SqlCommand(commandText, connection); 
     { 
      command.Parameters.AddWithValue("@SearchTerm", searchTerm); 

      using(var reader = command.ExecuteReader()) 
      { 
       var results = new List<T>(); 

       while(reader.Read()) 
       { 
        // Get results 
        // results.Add(result); 
       } 

       return results; 
      } 
     } 
    } 
} 

private string StartsWith(string searchTerm) 
{ 
    return string.Format("{0}%", searchTerm); 
} 

private string EndsWith(string searchTerm) 
{ 
    return string.Format("%{0}", searchTerm); 
} 

private string Contains(string searchTerm) 
{ 
    return string.Format("%{0}%", searchTerm); 
}