程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> asp.net SqlParameter關於Like的傳參數無效問題

asp.net SqlParameter關於Like的傳參數無效問題

編輯:ASP.NET基礎
按常規的思路,我們會這樣寫
復制代碼 代碼如下:
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)
};

這樣,就可以達到想要的查詢結果。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved