按常規的思路,我們會這樣寫
復制代碼 代碼如下:
String searchName ="Sam";
String strSql = "select * FROM Table1 where Name like '%@Name%' ";
SqlParameter[] parameters = {
new SqlParameter("@Name", searchName)
};
但結果是查詢不到結果,跟蹤代碼也沒有發現錯誤,又不想用字符串拼接的方式(防止攻擊)。於是跟蹤了Sql的執行,發現問題在於Sql給參數自動添加了單引號。
實際上在Sql,將like的代碼解析成為了 like '%'Sam'%' ",所以,你怎麼查也都得不到想要的結果。
據此,我們可以將代碼改成:
復制代碼 代碼如下:
String searchName ="Sam";
String strSql = "select * FROM Table1 where Name like @Name ";
searchName = "%"+searchName+"%"; //注意不用加單引號,傳參到Sql語句中會自動添加
SqlParameter[] parameters = {
new SqlParameter("@Name", searchName)
};
這樣,就可以達到想要的查詢結果。