C#機房重構系列---⑨C#中如何實現帶有參數的sql語句模糊查詢(即Like查詢)

      對於數據庫的模糊查詢我們應該不陌生,就是用關鍵字like,通配符“%”進行的查詢。在敲機房重構時,遇到一個模糊查詢的問題,就是在sql數據庫中的模糊查詢語句可以查出來數據,但相同的語句放到C#語句中利用參數進行模糊查詢,運行時不報錯,但就是查不出任何數據。剛開始很是納悶,就去網上查一些模糊查詢的資料,但都沒有一針見血的回答,不過巨人們還是給了很多指引噠,隨後自己便在巨人的指引下不斷地進行各種數據的嘗試,終於研究出來了。程序員的心真的是跌宕起伏啊^_^

       那在C#中要如何進行模糊查詢呢?

       首先我們來分析一下,爲什麼相同的sql語句放到C#中通過變量查詢就查不出來呢?

       因爲ADO.NET進行參數化時會自動將參數值包含在單引號中,ADO.NET中識別參數的標識符是使用“@”符號,也就是C#中含有“@”符號的標識符,在ADO.NET中會認爲是參數,但如果在SQL語句中將參數標識符@放在單引號中,單引號中的參數標識“@”只會被當成字符串!這就是爲什麼我們總查不出數據。

       以下代碼是無法查出數據的sql語句:

string sql="select * from WrokLogInfo where  userName like '%@userName%'";

      那正確的sql模糊查詢語句是什麼呢?

string sql = "select * from WorkLogInfo where userName like '%'+@userName+'%'";

     我們需要把sql語句中的通配符%,單獨標識出來,然後再加上變量@userName。

     看到這裏有沒有讀者腦中飄過這樣的問題:爲什麼查詢語句中要用單引號將%引起來呢?

     我們都知道在sql的查詢語句中單引號就起着C#語句中字符串雙引號的作用,在sql中是沒有雙引號的。

      

          

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章