PreparedStatement 是一個特殊的Statement對象,如果我們只是來查詢或者更新數(shù)據(jù)的話,最好用PreparedStatement代替Statement,因為它有以下有點:
1. 簡化Statement中的操作
2. 提高執(zhí)行語句的性能
3. 可讀性和可維護性更好
4. 安全性更好。
5. 使用PreparedStatement能夠預(yù)防SQL注入攻擊,所謂SQL注入,指的是通過把SQL命令插入到Web表單提交或者輸入域名或者頁面請求的查詢字符串,最終達到欺騙服務(wù)器,達到執(zhí)行惡意SQL命令的目的。注入只對SQL語句的編譯過程有破壞作用,而執(zhí)行階段只是把輸入串作為數(shù)據(jù)處理,不再需要對SQL語句進行解析,因此也就避免了類似select * from user where name='aa' and password='bb' or 1=1的sql注入問題的發(fā)生。
Statement 和 PreparedStatement之間的關(guān)系和區(qū)別.
· 關(guān)系:PreparedStatement繼承自Statement,都是接口
· 區(qū)別:PreparedStatement可以使用占位符,是預(yù)編譯的,批處理比Statement效率高
一般我回答上面就可以了,但是你想回答更完美點,那么你可以在衍生點這個方向的回答,我們在這里就不展開說下面的點了:
通過 MyCAT 對 PreparedStatement 的實現(xiàn)對大家能夠重新理解下。
1. JDBC Client 如何實現(xiàn) PreparedStatement。
2. MyCAT Server 如何處理 PreparedStatement。
更多關(guān)于“java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。