1. Statement用於處理靜態 SQL 語句, PreparedStatement用於處理動態SQL語句,在執行前會有一個預編譯的過程,它是有時間開銷的,雖然相對於數據庫的操作該時間開銷可以忽略不計。但是後者的預編譯結果會被緩存,而不論動態值發生什麼樣的變化。
2. PreparedStatement繼承於Statement,通常的JDBC實現中PreparedStatement最終還是通過Statement的相關方法來執行SQL的(可以做少量優化),其最主要的優勢在於,可以減少SQL的編譯錯誤(在JDBC中就可以捕獲部分異常而不是由數據庫服務器執行時返回錯誤代碼)、增加SQL安全性(減少SQL注入的機會)。
3,使用建議:如果SQL語句是執行一次,且不需向裏帶參數,可用Statement。
如果SQL語句多次執行,並且需要動態的向裏帶參,用PreparedStatement。
一般建議使用PreparedStatement。