天天看點

Statement 和 PreparedStatement 有什麼差別?哪個性 能更好?

與 Statement 相比,①PreparedStatement 接口代表預編譯的語句,它主要的優

勢在于可以減少 SQL 的編譯錯誤并增加 SQL 的安全性(減少 SQL 注射攻擊的可

能性);②PreparedStatement 中的 SQL 語句是可以帶參數的,避免了用字元串

連接配接拼接 SQL 語句的麻煩和不安全;③當批量處理 SQL 或頻繁執行相同的查詢時,

PreparedStatement 有明顯的性能上的優勢,由于資料庫可以将編譯優化後的

SQL 語句緩存起來,下次執行相同結構的語句時就會很快(不用再次編譯和生成

執行計劃)。

補充:為了提供對存儲過程的調用,JDBC API 中還提供了 CallableStatement 接

口。存儲過程(Stored Procedure)是資料庫中一組為了完成特定功能的 SQL 語

句的集合,經編譯後存儲在資料庫中,使用者通過指定存儲過程的名字并給出參數

(如果該存儲過程帶有參數)來執行它。雖然調用存儲過程會在網絡開銷、安全

性、性能上獲得很多好處,但是存在如果底層資料庫發生遷移時就會有很多麻煩,

因為每種資料庫的存儲過程在書寫上存在不少的差别。

Java Program!