JDBC(Java Database Connectivity
java數據庫連接)的API中的主要的四個類之一的java
sql
Statement要求開發者付出大量的時間和精力
在使用Statement獲取JDBC訪問時所具有的一個共通的問題是輸入適當格式的日期和時間戳
:
或者
/
/
:
PM
通過使用java
sql
PreparedStatement
這個問題可以自動解決
一個PreparedStatement是從java
sql
Connection對象和所提供的SQL字符串得到的
SQL字符串中包含問號(?)
這些問號標明變量的位置
然後提供變量的值
最後執行語句
例如
Stringsql =
SELECT * FROM People p WHERE p
id = ? AND p
name = ?
;
PreparedStatement ps = connection
prepareStatement(sql);
ps
setInt(
id);
ps
setString(
name);
ResultSet rs = ps
execute();
使用PreparedStatement的另一個優點是字符串不是動態創建的
下面是一個動態創建字符串的例子
Stringsql =
SELECT * FROM People p WHERE p
i =
+id;
這允許JVM(JavaVirtual Machine
Java虛擬機)和驅動/數據庫緩存語句和字符串並提高性能
PreparedStatement也提供數據庫無關性
當顯示聲明的SQL越少
那麼潛在的SQL語句的數據庫依賴性就越小
由於PreparedStatement具備很多優點
開發者可能通常都使用它
只有在完全是因為性能原因或者是在一行SQL語句中沒有變量的時候才使用通常的Statement
From:http://tw.wingwit.com/Article/program/Java/hx/201311/27092.html