• 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 对象进行数据库操作了

  • 相关阅读:
    JavaScript
    多线程
    MySQL进阶一(基础查询)
    英语语法随笔1
    MySQL
    Love Story
    两个数组的交集
    只出现一次的数字
    MybatisPlus
    数组中值加一
  • 原文地址:https://www.cnblogs.com/aierben/p/13089425.html
Copyright © 2020-2023  润新知