2015-05-24 59 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

其实它发生在这两种情况下。 –