總體來說,一套完整的JDBC的使用過程分爲六個步驟
載入數據庫驅動
Class.forName(DBDRIVER);
創建連接
Connection conn = (Connection) DriverManager.getConnection(DBURL, DBUSER, DBPASS);
創建語句
PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
執行語句
ResultSet rs = ps.executeQuery();
處理結果
關閉數據庫連接
加載數據庫驅動是一件相當耗費資源的工作。因此在使用JDBC作爲APPLICATION連接數據庫的手段時,經常要通過建立工具類的方式來對代碼進行優化
首先,工具類應該是單例的,這樣可以保證在內存中只存在一個數據庫驅動的實例,減少資源佔用
在工具類中,首先使用靜態代碼塊加載數據庫驅動
既然是單例的,那麼首先必須有一個方法來獲得一個該類的實例
public static JdbcUtilsSingleton getInstance() {
//雙重檢驗應用程序中是否存在單例類的實例
if (instance == null){
//同步
synchronized (JdbcUtilsSingleton.class) {
if (instance == null){
//延遲加載實例
instance = new JdbcUtilsSingleton();
}
}
}
return instance;
}
工具類的方法一般包括兩個主要方法,
一是返回一個數據庫的連接實例
public Connection getConnection() throws SQLException{
return (Connection) DriverManager.getConnection(DBURL, DBUSER, DBPASS);
}
二是負責關閉數據庫的連接
public void free(ResultSet rs, Statement st, Connection conn){
try {
if (rs != null){
rs.close();
System.out.println("關閉查詢結果集");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (st != null){
st.close();
System.out.println("關閉查詢");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null){
conn.close();
System.out.println("關閉連接");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
}
}
}
}