Druid:資料庫連線池實現技術
阿新 • • 發佈:2020-02-28
Druid:資料庫連線池實現技術,由阿里巴巴提供的
1. 步驟:
1. 匯入jar包 druid-1.0.9.jar
2. 定義配置檔案:
* 是properties形式的
* 可以叫任意名稱,可以放在任意目錄下
3. 載入配置檔案。Properties
4. 獲取資料庫連線池物件:通過工廠來來獲取 DruidDataSourceFactory
5. 獲取連線:getConnection( )
2. 定義工具類
1. 定義一個類 JDBCUtils
2. 提供靜態程式碼塊載入配置檔案,初始化連線池物件
3. 提供方法
1. 獲取連線方法:通過資料庫連線池獲取連線
2. 釋放資源
3. 獲取連線池的方法
JDBCUtils.java
package cn.itcast.utils; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; /** * Druid連線池的工具類 */ public class JDBCUtils { //1.定義成員變數 DataSource private static DataSource ds ; static{ try { //1.載入配置檔案 Properties pro = new Properties(); pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties")); //2.獲取DataSource ds = DruidDataSourceFactory.createDataSource(pro); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } /** * 獲取連線 */ public static Connection getConnection() throws SQLException { return ds.getConnection(); } /** * 釋放資源 */ public static void close(Statement stmt,Connection conn){ /* if(stmt != null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn != null){ try { conn.close();//歸還連線 } catch (SQLException e) { e.printStackTrace(); } }*/ close(null,stmt,conn); } public static void close(ResultSet rs,Statement stmt,Connection conn){ if(rs != null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(stmt != null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn != null){ try { conn.close();//歸還連線 } catch (SQLException e) { e.printStackTrace(); } } } /** * 獲取連線池方法 */ public static DataSource getDataSource(){ return ds; } }
DruidDemo2.java
package cn.itcast.datasource.druid; import cn.itcast.utils.JDBCUtils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * 使用新的工具類 */ public class DruidDemo2 { public static void main(String[] args) { /* * 完成新增操作:給account表新增一條記錄 */ Connection conn = null; PreparedStatement pstmt = null; try { //1.獲取連線 conn = JDBCUtils.getConnection(); //2.定義sql String sql = "insert into tb1_employee values(null,?,?)"; //3.獲取pstmt物件 pstmt = conn.prepareStatement(sql); //4.給?賦值 pstmt.setString(1,"王五"); pstmt.setInt(2,1); pstmt.setString(3,"[email protected]"); //5.執行sql int count = pstmt.executeUpdate(); System.out.println(count); } catch (SQLException e) { e.printStackTrace(); }finally { //6. 釋放資源 JDBCUtils.close(pstmt,conn); } } }