預編譯和參數化處理sql原理相似:sql
參數化處理sql 是將參數進行了字符串化處理,把參數中的單引號,井號#,等都作了轉義處理,進而在執行sql語句時不會被當作sql中的定界符和指定符來執行。spa
好比,使用直接拼接的sql時:字符串
string sql="select * from tb where username='" + username + "'"string
若是username值爲aa';truncate table admins --,那麼sql語句就變爲 sql = "select * from tb where username='aa';truncate table admins --'",後果很明顯。編譯
而使用參數來傳遞username,至關於對引號等符號都加了\,或者至關於作了.tostring()操做。table