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 對象進行資料庫操作了