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