2015-05-24 56 views
1

我正在構建圖書館管理軟件,並試圖按名稱搜索書籍。然而,當我嘗試使用Ive實現的東西時,什麼也得不到。ListView SELECT查詢不返回任何東西

這是用於從數據庫中檢索數據的代碼。

string constr = ConfigurationManager.ConnectionStrings["LibraryContext"].ConnectionString; 
     using (SqlConnection con = new SqlConnection(constr)) 
     { 
      using (SqlCommand cmd = new SqlCommand()) 
      { 
       string bookTitle = Request.QueryString["BookTitle"]; 
       cmd.Parameters.AddWithValue("@Title", bookTitle); 
       cmd.CommandText = "SELECT * FROM Books WHERE Title LIKE '%@Title%'"; 
       //cmd.Parameters.AddWithValue("@Title", bookTitle); 
       cmd.Connection = con; 

       using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) 
       { 
        DataTable dt = new DataTable(); 
        sda.Fill(dt); 
        lvCustomers.DataSource = dt; 
        lvCustomers.DataBind(); 
       } 
      } 
     } 

謝謝你的幫助

回答

1

不要把周圍的參數報價

cmd.CommandText = "SELECT * FROM Books WHERE Title LIKE %@Title%"; 

行情和身邊的參數變換分析裏面他們一切文字字符串,當然我想,你不沒有任何書的字面意思是「%@ Title%」

我也更喜歡用

cmd.CommandText = "SELECT * FROM Books WHERE Title LIKE @Title";  
cmd.Parameters.Add("@Title", SqlDbType.NVarChar).Value = "%" + bookTitle + "%"); 

AddWithValue是與衆多缺點的快捷方式,你需要知道的嘗試使用它之前:使用%@標題%Can we stop to use AddWithValue already?

+0

但是現在的編譯器抱怨'@附近的語法不正確Title' –

+0

或第二種方法? – Steve

+0

其實它發生在這兩種情況下。 –