zoukankan      html  css  js  c++  java
  • <十三>JDBC_dbcp数据库连接池

     

     

     

    配置文件:jdbc.properties

    username=root
    password=kk
    driverClassName=com.mysql.jdbc.Driver
    url=jdbc:mysql://192.168.56.1:3306/test

    initialSize=10
    maxTotal=50
    minIdle=5
    maxWaitMillis=5000

    测试文件:JDBCTest.java

    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.Properties;
    import javax.sql.DataSource;
    import org.apache.commons.dbcp2.BasicDataSource;
    import org.apache.commons.dbcp2.BasicDataSourceFactory;
    import org.junit.Test;

    public class JDBCTest {

       /*
        * 1、加载dbcp的properties配置文件:配置文件中的键需要来自BasicDataSource的属性
        * 2、调用BasicDataSourceFactory的createDataSource方法创建DataSource实例
        * 3、从DataSource获取数据库连接
        * */
       @Test
       public void testDBCPWithDataSourceFactory() throws Exception{
      
          Properties properties=new Properties();
          InputStream is=JDBCTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
          properties.load(is);
          DataSource ds=BasicDataSourceFactory.createDataSource(properties);
          System.out.println(ds.getConnection());
          //验证配置文件的属性
          BasicDataSource basicDataSource=(BasicDataSource) ds;
          System.out.println("最大等待时间:"+basicDataSource.getMaxWaitMillis());
       }

       //还有一种不用通过配置文件的方式如下单元测试方法:

       /*
        * 使用DBCP数据库连接池
        * 1、加入jar包
        * 2、创建数据库连接池
        * 3、设置数据源必须的属性
        * 4、从数据源中获取数据库连接
        * */
       @Test
       public void testDBCP() throws SQLException{
      
          //1、创建DBCP数据源实例 
          final BasicDataSource bds=new BasicDataSource();
      
          //2、为数据源实例指定必须的属性
          bds.setUsername("root");
          bds.setPassword("kk");
          bds.setUrl("jdbc:mysql:///test");
          bds.setDriverClassName("com.mysql.jdbc.Driver");
          /*
           * 3、指定数据源一些可选的属性
           *  1>指定数据库连接池中初始化连接数
           *  2>指定最大的连接数:同一时刻可以同时向数据库申请的连接数
           *  3>指定最小连接数:在数据库连接池空闲状态下,连接池中最少有多少个连接
           * */
          bds.setInitialSize(10);
          bds.setMaxTotal(3);
          bds.setMinIdle(2);
          //获取连接时的最大等待毫秒数
          bds.setMaxWaitMillis(1000*5);
          //4、从数据源获取数据库连接
          Connection con=bds.getConnection();
          System.out.println("1---》"+con);
          Connection con2=bds.getConnection();
          System.out.println("2---》"+con2);
          Connection con3=bds.getConnection();
          System.out.println("3---》"+con3);
      
          new Thread(){
             public void run() {
                Connection conn;
                try {
                   conn=bds.getConnection();
                   System.out.println("thread->"+conn.getClass());
                } catch (Exception e) {
         
                }
             };
          }.start();
      
          try {
             Thread.sleep(3000);
          } catch (InterruptedException e) {
             e.printStackTrace();
          }
            con2.close();
       }
    }

  • 相关阅读:
    IE6中overflow:hidden失效怎么办
    单例模式笔记
    linux 中的 "2>&1"含义
    linux 文件目录介绍
    centos 安装jdk
    SimpleDateFormat非线程安全
    Linux下Weblogic 11g R1安装和配置
    <meta>标签 的一些用法
    基于java的邮件群发软件
    史上最完整的集合类总结及hashMap遍历
  • 原文地址:https://www.cnblogs.com/iamkk/p/6093389.html
Copyright © 2011-2022 走看看