1.Statement、PreparedStatement和CallableStatement都是介面(interface)。
2.Statement繼承自Wrapper、PreparedStatement繼承自Statement、CallableStatement繼承自PreparedStatement。
3.
Statement介面提供了執行語句和獲取結果的基本方法;
PreparedStatement介面添加了處理IN引數的方法;
CallableStatement介面添加了處理OUT引數的方法。
4.
a.Statement:
b.PreparedStatement:
可變引數的SQL,編譯一次,執行多次,效率高;
安全性好,有效防止Sql注入等問題;
c.CallableStatement:
繼承自PreparedStatement,支援帶引數的SQL操作;
支援呼叫儲存過程,提供了對輸出和輸入/輸出引數(INOUT)的支援;
Statement每次執行sql語句,資料庫都要執行sql語句的編譯,
最好用於僅執行一次查詢並返回結果的情形,效率高於PreparedStatement。
PreparedStatement是預編譯的,使用PreparedStatement有幾個好處
1.在執行可變引數的一條SQL時,PreparedStatement比Statement的效率高,因為DBMS預編譯一條SQL當然會比多次編譯一條SQL的效率要高。
2.安全性好,有效防止Sql注入等問題。
3.對於多次重複執行的語句,使用PreparedStament效率會更高一點,並且在這種情況下也比較適合使用batch;
4.程式碼的可讀性和可維護性。
注:
executeQuery:返回結果集(ResultSet)。
executeUpdate:執行給定SQL語句,該語句可能為INSERT、UPDATE或DELETE語句,
或者不返回任何內容的SQL語句(如SQLDDL語句)。
execute:可用於執行任何SQL語句,返回一個boolean值,
表明執行該SQL語句是否返回了ResultSet。如果執行後第一個結果是ResultSet,則返回true,否則返回false。
1.Statement、PreparedStatement和CallableStatement都是介面(interface)。
2.Statement繼承自Wrapper、PreparedStatement繼承自Statement、CallableStatement繼承自PreparedStatement。
3.
Statement介面提供了執行語句和獲取結果的基本方法;
PreparedStatement介面添加了處理IN引數的方法;
CallableStatement介面添加了處理OUT引數的方法。
4.
a.Statement:
b.PreparedStatement:
可變引數的SQL,編譯一次,執行多次,效率高;
安全性好,有效防止Sql注入等問題;
c.CallableStatement:
繼承自PreparedStatement,支援帶引數的SQL操作;
支援呼叫儲存過程,提供了對輸出和輸入/輸出引數(INOUT)的支援;
Statement每次執行sql語句,資料庫都要執行sql語句的編譯,
最好用於僅執行一次查詢並返回結果的情形,效率高於PreparedStatement。
PreparedStatement是預編譯的,使用PreparedStatement有幾個好處
1.在執行可變引數的一條SQL時,PreparedStatement比Statement的效率高,因為DBMS預編譯一條SQL當然會比多次編譯一條SQL的效率要高。
2.安全性好,有效防止Sql注入等問題。
3.對於多次重複執行的語句,使用PreparedStament效率會更高一點,並且在這種情況下也比較適合使用batch;
4.程式碼的可讀性和可維護性。
注:
executeQuery:返回結果集(ResultSet)。
executeUpdate:執行給定SQL語句,該語句可能為INSERT、UPDATE或DELETE語句,
或者不返回任何內容的SQL語句(如SQLDDL語句)。
execute:可用於執行任何SQL語句,返回一個boolean值,
表明執行該SQL語句是否返回了ResultSet。如果執行後第一個結果是ResultSet,則返回true,否則返回false。