1. <wbr id="m8vu6"></wbr>

      <del id="m8vu6"><center id="m8vu6"><source id="m8vu6"></source></center></del>
        <p id="m8vu6"><sub id="m8vu6"></sub></p>

        VB.net 2010 視頻教程 VB.net 2010 視頻教程 python基礎視頻教程
        SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
        當前位置:
        首頁 > 編程開發 > c#教程 >
        • C#教程之C#教程之Sql Server 的參數化查詢

        本站最新發布   C#從入門到精通
        試聽地址  
        http://www.squ68.com/eschool/CSharpxin3721/

        為什么要使用參數化查詢呢?參數化查詢寫起來看起來都麻煩,還不如用拼接sql語句來的方便快捷。當然,拼接sql語句執行查詢雖然看起來方便簡潔,其實不然。遠沒有參數化查詢來的安全和快捷。

         

        今天剛好了解了一下關于Sql Server 參數化查詢和拼接sql語句來執行查詢的一點區別。

        參數化查詢與拼接sql語句查詢相比主要有兩點好處:

            1、防止sql注入 

            2、 提高性能(復用查詢計劃)

        首先我們來談下參數化查詢是如何防止sql注入的這個問題吧。

        防注入例子:

          拼接sql語句:

        ("select * from user where name={0}",username)
        
        或者
        
        ("select * from user where name="+username)

        當 name傳進來是一個'aa';Truncate Table user 的時候,這樣會導致直接清除整個表數據

        "select * from user where name='aa';Truncate Table user


          我們使用參數化的時候: 

        ("select * from user where name=@username",new {username=username})


        這時候即使我們傳進來的是'aa';Truncate Table user ,數據庫端也會把這些當做字符串處理,執行的sql語句會變成

        select * from user where name=''aa';Truncate Table user '

        實際上把'aa';Truncate Table user 這個當做了name的值做查詢條件了

        以上就是一個簡單的例子介紹關于參數化查詢如何防止sql注入。

        再看到底是如何提高性能的呢?

        復用查詢計劃:

        select * from AU_User where Id=1
        select * from AU_User where Id=2

        Sql Server在執行一條查詢語句之前都對對它進行“編譯 ”并生成“查詢計劃”,上面兩條查詢語句生成的查詢計劃就是兩條不一樣的查詢計劃,在下面這張圖片當中我們可以去嘗試下執行這兩條sql語句

        ,結果顯而易見會生成兩條查詢計劃,Id后面所接的參數不一致。

         

         

         

         

         

         

         

         

         

         

         

         

         

        然后我們再來看看使用參數化查詢

        select * from AU_User where Id=@Id


        這樣不管你傳的參數是多少,執行編譯生成的查詢計劃都是 select * from AU_User where Id=@Id,這樣可以實現查詢計劃的復用,并不需要同一個查詢去生成多個查詢計劃
        完全可以節省其中生成查詢計劃的時間

        相關教程
                
        免费看成年人视频大全_免费看成年人视频在线观看