2014-02-27 49 views
0

搜索文本框沒有返回一個有效的人在屏幕上的數據表,任何人有任何想法爲什麼?在編譯沒有錯誤代碼,但沒有數據在屏幕上,我不明白爲什麼

數據庫類:

static public DataTable SearchButton(string search) 
{ 
    using (var conn = new SqlConnection(DatabaseConnectionString)) 
    { 
     var dt = new DataTable(); 
     const string searchQuery = "exec SearchTerm"; 

     using (var cmd = new SqlCommand(searchQuery, conn)) 
     { 
      conn.Open(); 
      cmd.Parameters.Add("@Search_Term", SqlDbType.VarChar, search.Length).Value = "%" + search + "%"; 
      dt.Load(cmd.ExecuteReader()); 
      return dt; 
     } 
    } 
} 

PeopleList.aspx.cs:

protected void SearchButton_Click(object sender, EventArgs e) 
{ 
    if (SearchTextbox.Text == null || SearchTextbox.Text == "") 
    { 
     PeopleListLabel.Text = "Please enter a search term!"; 
    } 
    else 
    { 
     Phonelist.DataSource = Database.SearchButton(SearchTextbox.Text); 
     Phonelist.DataBind(); 
    } 
} 

SQL存儲過程:

print 'SearchTerm' 
if exists (select * from sys.objects where object_id = object_id(N'[SeachTerm]') AND type in (N'P', N'PC')) 
    drop procedure SearchTerm 

go 
    create procedure SearchTerm 
     @Search_Term varchar(64) = null 
    as 
    begin 
    set nocount on; 

    SELECT first_name, last_name, email_address, gender, home_address, home_city, home_state, home_zip_code, telephone_number 
    FROM person 
    WHERE first_name LIKE @Search_Term OR last_name LIKE @Search_Term 
end 

回答

0

您需要將搜索參數放在單引號內。

替換此:

cmd.Parameters.Add("@Search_Term", SqlDbType.VarChar, search.Length).Value 
    = "%" + search + "%"; 

這一點:

cmd.Parameters.Add("@Search_Term", SqlDbType.VarChar, search.Length).Value 
    = "'%" + search + "%'"; 
0

你缺少commandType。

static public DataTable SearchButton(string search) 
    { 
     using (var conn = new SqlConnection(DatabaseConnectionString)) 
     { 
      var dt = new DataTable(); 
      const string searchQuery = "exec SearchTerm"; 
      using (var cmd = new SqlCommand(searchQuery, conn)) 
      { 
       conn.Open(); 
       cmd.CommandType = CommandType.StoredProcedure 
       cmd.Parameters.Add("@Search_Term", SqlDbType.VarChar, search.Length).Value = "'%" + search + "%'"; 
       dt.Load(cmd.ExecuteReader()); 
       return dt; 
      } 
     } 
    } 
+0

感謝,它也不太工作雖然,DataTable中返回一個空值,但搜索項返回輸入的是成搜索框。因此沒有任何東西填充表格(對不起,我是新來的) – Jake

+0

@Jake:在單引號中加入搜索參數try - >'cmd.Parameters.Add(「@ Search_Term」,SqlDbType.VarChar,search.Length)。值=「'%」+搜索+「%'」;' –

相關問題