一、正確案例
string name=“梅”;
string sql="select * from test where Name like @Name";
//包含 梅
SqlParameter par=new SqlParameter("@Name","%"+name+"%");
// 以 梅 開頭
SqlParameter par=new SqlParameter("@Name", name+"%");
// 以 梅 結尾
SqlParameter par=new SqlParameter("@Name", "%"+name);
二 錯誤案例
string name=“梅”;
// 多加 單引號 ‘’ ,@Name 被識別為字符串而不是參數。
string sql="select * from test where Name like '@Name' ";
SqlParameter par=new SqlParameter("@Name","%"+name+"%");
//相同錯誤變種1
string sql="select * from test where Name like '%@Name%' ";
SqlParameter par=new SqlParameter("@Name", name);
//相同 錯誤變種2
string sql="select * from test where Name like ' %" + "@Name"+"%' ";
SqlParameter par=new SqlParameter("@Name", name);
主要是對單引號的理解錯誤。 參數化查詢中對字符串類型會自動處理,不需要手動添加單引號。
三 一種可行,但沒有用到參數化查詢的方法
// sql 簡單拼接(存在sql注入攻擊的風險)
string name=“梅”;
string sql="select * from test where Name like ' %" + name+ "%' ";
四、動漫化:
我仿佛聽到動漫人物“字符串”: 討厭,人家是自帶胸器(單引號)的啦!
配樂響起:just 地雷,just 地雷,地雷 ~地雷~
參考來源:https://bbs.csdn.net/topics/100119798