1. 程式人生 > >JDBC Statement、PreparedStatement和CallableStatement的區別

JDBC Statement、PreparedStatement和CallableStatement的區別

  • 1.Statement、PreparedStatement和CallableStatement都是介面(interface)。  
    2.Statement繼承自Wrapper、PreparedStatement繼承自Statement、CallableStatement繼承自PreparedStatement。  
    3.  
               Statement介面提供了執行語句和獲取結果的基本方法;  
               PreparedStatement介面添加了處理 IN 引數的方法;  
               CallableStatement介面添加了處理 OUT 引數的方法。  
    4.  
          a.Statement:  
               普通的不帶參的查詢SQL;支援批量更新,批量刪除;  
           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.  程式碼的可讀性和可維護性。

     

  • JDBC statement中的PReparedStatement的佔位符對應著即將與之對應當值,並且一個佔位符只能對應一個值,如果能對應多個就會引起混淆。sql語句是確定的,那麼一個佔位符必定只能對應一個值