DBCP连接池

学数据库真是枯燥,不如写个网页去调用数据库,又复习了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  链接如下 https://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 对象进行数据库操作了

原文地址:https://www.cnblogs.com/aierben/p/13089425.html