Statement 和 PreparedStatement之間的關係和區別.
關係:PreparedStatement繼承自Statement,都是接口
區別:PreparedStatement可以使用佔位符,是預編譯的,批處理比Statement效率高
詳解:
1、PreparedStatement:表示預編譯的 SQL 語句的對象。
接口:public interface PreparedStatement extends Statement之間的繼承關係
SQL 語句被預編譯並存儲在 PreparedStatement 對象中。然後可以使用此對象多次高效地執行該語句。
注:用於設置 IN 參數值的設置方法(setShort、setString 等等)必須指定與輸入參數的已定義 SQL 類型兼容的類型。例如,如果 IN 參數具有 SQL 類型 INTEGER,那麼應該使用 setInt 方法,問號的位置也是應該注意的,因爲第一個問好的位置爲1,第二個問號的位置爲2.以此類推。
PreparedStatedment繼承字statement(繼承自Wrapper接口,用於執行靜態 SQL 語句並返回它所生成結果的對象。),和wrapper(在相關實例實際上是代理類時提供獲取委託實例能力的 JDBC 類的接口。)接口表示預編譯的sql語句對象
接口 CallableStatement(繼承自PreparedStatedment:用於執行 SQL 存儲過程的接口。使用: {?=
call <procedure-name>[(<arg1>,<arg2>, ...)]}
{call <procedure-name>[(<arg1>,<arg2>, ...)]}
)
在功能上:PreparedStatedment的預編譯批量操作功能使得代碼盡最大可能提高性能,它的可替換佔位符的功能使得可以防SQL注入功能最重要的是提高了安全性能,它可替換佔位符的功能使得代碼的可讀性和可維護性能提高