sql 參數化查詢問題


 

一、正確案例

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM