DBCP連接池

  • 2020 年 6 月 10 日
  • 筆記

學資料庫真是枯燥,不如寫個網頁去調用資料庫,又複習了JAVA,有學習了資料庫,真是一舉兩得。

在使用連接池對資料庫進行連接時,因為好久沒弄,好多地方都忘記了,剛好寫到這裡整理一下。

首先準備相應的 jar包 ,分別是

1.commons-dbcp2-2.7.0.jar

2.commons-logging-1.2.jar

3.commons-pool2-2.8.0.jar

4.mysql-connector-java-8.0.20.jar

jar  鏈接如下 //files.cnblogs.com/files/aierben/DBCP.zip

第一個包對後面的幾個包有依賴,缺少的話,會產生找不到或無法載入主類的錯誤

然後新建一個配置文件

內容如下 (其中需要注意的時,如果是記事本建立的文件,記得保存時編碼格式選擇utf8,不然注釋部分會顯示亂碼)

 

//這裡的driveClassName 和 url 是 java8 所使用的mysql-connector 推薦的鏈接方式,以前的驅動方式會在JAVA8環境下會報錯

dbcpconfig.properties

 

 

driverClassName=com.mysql.cj.jdbc.Driver

#url

url=jdbc:mysql://localhost:3306/highperformancesql?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT

#用戶名

username=用戶名

#密碼

password=密碼

#初試連接數

initialSize=30

#最大活躍數

maxTotal=30

#最大idle數

maxIdle=10

#最小idle數

minIdle=5

#最長等待時間(毫秒)

maxWaitMillis=1000

#程式中的連接不使用後是否被連接池回收(該版本要使用removeAbandonedOnMaintenance和removeAbandonedOnBorrow)

#removeAbandoned=true

removeAbandonedOnMaintenance=true

removeAbandonedOnBorrow=true

#連接在所指定的秒數內未使用才會被刪除(秒)(為配合測試程式才配置為1秒)

removeAbandonedTimeout=1

 

 

然後新建java工具類(DBCPUtil)

 

  1 public class DBCPUtil {
  2 
  3     private static DataSource ds ;
  4 
  5     static
  6 
  7     {
  8 
  9         try
 10 
 11         {
 12 
 13             //獲取配置文件位元組流
 14 
 15             InputStream is  = DBCPUtil.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");
 16 
 17             //配置文件類
 18 
 19             Properties props = new Properties();
 20 
 21             //配置文件位元組流載入到配置文件對象
 22 
 23             props.load(is);
 24 
 25             //資料庫對象獲取數據源
 26 
 27             ds = BasicDataSourceFactory.createDataSource(props);
 28 
 29         }catch(Exception e) {
 30 
 31             e.printStackTrace();
 32 
 33         }
 34 
 35     }
 36 
 37     //返回資料庫對象對應連接
 38 
 39     public static Connection getConnection() {
 40 
 41         try {
 42 
 43             return ds.getConnection();
 44 
 45         } catch (SQLException e) {
 46 
 47             throw new RuntimeException();
 48 
 49         }
 50 
 51     }
 52 
 53     //釋放資料庫結果集對象,連接對象,語句操作對象
 54 
 55     public static void release(ResultSet rs,Statement stmt,Connection conn)
 56 
 57     {
 58 
 59         if(rs != null)
 60 
 61         {
 62 
 63             try {
 64 
 65                 rs.close();
 66 
 67             } catch (SQLException e) {
 68 
 69                 e.printStackTrace();
 70 
 71             }
 72 
 73             rs = null;
 74 
 75            
 76 
 77         }
 78 
 79         if(stmt != null)
 80 
 81         {
 82 
 83             try {
 84 
 85                 stmt.close();
 86 
 87             } catch (SQLException e) {
 88 
 89                 e.printStackTrace();
 90 
 91             }
 92 
 93             stmt = null;
 94 
 95         }
 96 
 97         if(conn != null)
 98 
 99         {
100 
101             try {
102 
103                 conn.close();
104 
105             } catch (SQLException e) {
106 
107                 e.printStackTrace();
108 
109             }
110 
111             conn = null;
112 
113         }
114 
115     }
116 
117 }

 

這樣你就可以在其他的程式中通過獲取 Connection 對象進行資料庫操作了