Java中Statement與PreparedStatement與CallableStatement之間的區別 - javarevisited
這三個類的目的是執行不同型別的SQL查詢,但是它們之間還有一些細微的差別。現在讓我們來看一下它們:
- 1. SQL查詢的型別:
這三個類中每一個的根本區別和獨特之處之一是Statements用於執行標準SQL查詢,PreparedStatement用於執行繫結或動態查詢,CallableStatement用於從Java呼叫儲存過程。
- 2. SQL查詢的頻率:
Statement,PreparedSatement和CallableStatement之間的另一個關鍵區別在於,當一個特定的SQL查詢可能僅執行一次時,首選使用首選,而當特定的SQL查詢要多次執行但首選使用PreparedStatement時,則首選使用PreparedStatement。具有不同的值,例如 SELECT * From Users其中UserId =?。另一方面,當要執行儲存過程時,首選CallableStatement。
- 3. SQL隱碼攻擊
PreparedStatement,Statement和CallableStatement之間的另一個重要區別是PreparedStatement阻止Java Web應用程式進行SQL隱碼攻擊。這也是在Java Web應用程式中使用PreparedStatement的常見原因之一。 在語句上使用PreparedStatement以獲得更好的效能和防止SQL隱碼攻擊也是一種 JDBC最佳實踐。
- 4.效能
這可能是Java中Statement,PreparedStatement和CallableStatement之間最本質的區別。與PreparedStatement的效能相比,Statement的效能非常低,因為已編譯查詢,並且計劃在資料庫端進行了快取。與Statement相比,CalalbleStatement的效能很高。
- 5.用法
Statement主要用於執行CREATE,ALTER和DROP之類的DDL語句,儘管您也可以執行一次性SELECT語句。與此相比,PreparedStatemetn用於應該多次執行但使用不同引數的SQL查詢。CalalbleStatement用於呼叫儲存過程和函式。
相關文章
- JDBC3——SQL隱碼攻擊、及其解決方法——Statement與PreparedStatement對比——PreparedStatement的CRUDJDBCSQL
- Oracle與OpenJDK之間的區別OracleJDK
- GCD與NSOperation之間的區別GC
- Java中(==)與equals的區別Java
- [Jmeter] Implementation 中 JAVA 與 HTTPClient4 如何探尋兩者之間的區別JMeterJavaHTTPclient
- 雲與本地部署 ERP 之間的區別
- Java之String的equals與contentEquals區別Java
- Java中類與物件的關係與區別Java物件
- Java中replace與replaceAll區別Java
- 陣列地址與指標之間的區別與聯絡陣列指標
- 簡單介紹HTTP與HTTPS之間的區別HTTP
- Java中Array與ArrayList之間的轉換Java
- PHP 中的陣列相加操作以及與 array_merge 之間的區別PHP陣列
- 知識點,JavaScript與Java之間有什麼區別和聯絡?JavaScript
- Java synchronized與ReentrantLock的區別JavasynchronizedReentrantLock
- Java中抽象類與介面的區別Java抽象
- 淺析HTML、CSS、JavaScript之間的聯絡與區別!HTMLCSSJavaScript
- 在Git中,origin / master與origin master之間有什麼區別?GitAST
- Javascript中“==”與“===”的區別JavaScript
- Python中 ‘==‘ 與‘is‘的區別Python
- 大資料分析與機器學習之間的區別與聯絡大資料機器學習
- Go 中的 channel 與 Java BlockingQueue 的本質區別GoJavaBloC
- Java與C語言的區別?JavaC語言
- 27、EJB與JAVA BEAN的區別?JavaBean
- Java泛型T與?的區別Java泛型
- java-----instanceof與getClass的區別Java
- Java中equals與==的本質區別是什麼?Java
- Hibernate之openSession與getCurrentSession的區別Session
- 一篇讓你明白程式與執行緒之間的區別與聯絡執行緒
- 深度學習與機器學習之間區別 - javaworld深度學習機器學習Java
- Java 執行緒中斷(interrupt)與阻塞 (park)的區別Java執行緒
- Java中介面與繼承的區別Java繼承
- Java—重寫與過載的區別Java
- Java面試題 equals()與"=="的區別?Java面試題
- JSON 與 Java 物件之間的轉化JSONJava物件
- js中 let 與 var 的區別JS
- vue中sass與SCSS的區別VueCSS
- js中!和!!的區別與用法JS