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用於呼叫儲存過程和函式。
相關文章
- JDBC之Statement,PreparedStatement,CallableStatement的區別JDBC
- Statement和PreparedStatement之間的區別
- java-Statement、PreparedStatement、PreparedStatement + 批處理 的區別Java
- PrepareStatement與Statement之間的區別REST
- Oracle與OpenJDK之間的區別OracleJDK
- Java中(==)與equals的區別Java
- JDBC3——SQL隱碼攻擊、及其解決方法——Statement與PreparedStatement對比——PreparedStatement的CRUDJDBCSQL
- GCD與NSOperation之間的區別GC
- PHP abstract與interface之間的區別PHP
- Java中類與物件的關係與區別Java物件
- [Jmeter] Implementation 中 JAVA 與 HTTPClient4 如何探尋兩者之間的區別JMeterJavaHTTPclient
- Java中replace與replaceAll區別Java
- java中Map,List與Set的區別Java
- Java中Array與ArrayList的主要區別Java
- 陣列地址與指標之間的區別與聯絡陣列指標
- 大資料分析與機器學習之間的區別與聯絡大資料機器學習
- 雲與本地部署 ERP 之間的區別
- size resize與capacity reserve之間的區別
- 淺談java中extends與implements的區別Java
- java中過載與重寫的區別Java
- Java中Vector與ArrayList的區別詳解Java
- 深度學習與機器學習之間區別 - javaworld深度學習機器學習Java
- Java中Array與ArrayList之間的轉換Java
- [譯]HTML attribute與DOM property之間的區別?HTML
- TCP、UDP、HTTP、SOCKET之間的區別與聯絡TCPUDPHTTP
- Java之String的equals與contentEquals區別Java
- Java中抽象類與介面的區別Java抽象
- Javascript中“==”與“===”的區別JavaScript
- js中“==”與"==="的區別JS
- 【轉載】C#之int與Java之Integer的區別C#Java
- Java中final與static final的區別Java
- JAVA中String與StringBuffer的區別Java
- 淺談HTTP中Get與Post的區別-javaHTTPJava
- JAVA 與 C++ 的區別JavaC++
- Java Bean 與 EJB的區別JavaBean
- c#與java的區別C#Java
- 知識點,JavaScript與Java之間有什麼區別和聯絡?JavaScript
- 淺析HTML、CSS、JavaScript之間的聯絡與區別!HTMLCSSJavaScript