asp.net SqlParameter關(guān)于Like的傳參數(shù)無效問題
來源:懂視網(wǎng)
責編:小采
時間:2020-11-27 22:44:08
asp.net SqlParameter關(guān)于Like的傳參數(shù)無效問題
asp.net SqlParameter關(guān)于Like的傳參數(shù)無效問題:按常規(guī)的思路,我們會這樣寫 代碼如下:String searchName =Sam; String strSql = select * FROM Table1 where Name like '%@Name%' ; SqlParameter[] parameters = { new SqlParameter(@Name, se
導讀asp.net SqlParameter關(guān)于Like的傳參數(shù)無效問題:按常規(guī)的思路,我們會這樣寫 代碼如下:String searchName =Sam; String strSql = select * FROM Table1 where Name like '%@Name%' ; SqlParameter[] parameters = { new SqlParameter(@Name, se

按常規(guī)的思路,我們會這樣寫
代碼如下:
String searchName ="Sam";
String strSql = "select * FROM Table1 where Name like '%@Name%' ";
SqlParameter[] parameters = {
new SqlParameter("@Name", searchName)
};
但結(jié)果是查詢不到結(jié)果,跟蹤代碼也沒有發(fā)現(xiàn)錯誤,又不想用字符串拼接的方式(防止攻擊)。于是跟蹤了Sql的執(zhí)行,發(fā)現(xiàn)問題在于Sql給參數(shù)自動添加了單引號。
實際上在Sql,將like的代碼解析成為了 like '%'Sam'%' ",所以,你怎么查也都得不到想要的結(jié)果。
據(jù)此,我們可以將代碼改成:
代碼如下:
String searchName ="Sam";
String strSql = "select * FROM Table1 where Name like @Name ";
searchName = "%"+searchName+"%"; //注意不用加單引號,傳參到Sql語句中會自動添加
SqlParameter[] parameters = {
new SqlParameter("@Name", searchName)
};
這樣,就可以達到想要的查詢結(jié)果。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
asp.net SqlParameter關(guān)于Like的傳參數(shù)無效問題
asp.net SqlParameter關(guān)于Like的傳參數(shù)無效問題:按常規(guī)的思路,我們會這樣寫 代碼如下:String searchName =Sam; String strSql = select * FROM Table1 where Name like '%@Name%' ; SqlParameter[] parameters = { new SqlParameter(@Name, se