WHCSRL 技术网

c3p0数据库连接池

方式一

public class DateSource {
	//方式一
	
	@Test
	public void C3p0Test() throws PropertyVetoException, SQLException {
		//获c3p0数据库连接池
		ComboPooledDataSource cpds = new ComboPooledDataSource();
		cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver            
		cpds.setJdbcUrl( "jdbc:mysql://localhost:3306/test" );
		cpds.setUser("root");                                  
		cpds.setPassword("root"); 
		//通过设置先关掉的参数,对数据库连接池管理
		//设置初始数据库连接池中的链接数
		cpds.setInitialPoolSize(10);
		Connection  conn=cpds.getConnection();
		System.out.println(conn);
		
		
		
		//销毁数据库连接池
		DataSources.destroy( cpds );
		
		
	}
	//方式二:使用配置文件
	@Test
	public void test2() throws SQLException {
		ComboPooledDataSource cpds = new ComboPooledDataSource("hello");
		Connection connection = cpds.getConnection();
		System.out.println(connection);
		cpds.close();
	}


}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

正常的操作下,我们只需要一个数据库连接池,因此需要对获取链接的方法进行改动

private static ComboPooledDataSource cpds = new ComboPooledDataSource("hello");
public void getCOnnection() throws SQLException {
		
		Connection connection = cpds.getConnection();
		
		return connection;
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

方式二需要在src目录下创建c3p0-config.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
  <default-config>
    <property name="automaticTestTable">con_test</property>
    <property name="checkoutTimeout">30000</property>
    <property name="idleConnectionTestPeriod">30</property>
    <property name="initialPoolSize">10</property>
    <property name="maxIdleTime">30</property>
    <property name="maxPoolSize">100</property>
    <property name="minPoolSize">10</property>
    <property name="maxStatements">200</property>

    <user-overrides user="test-user">
      <property name="maxPoolSize">10</property>
      <property name="minPoolSize">1</property>
      <property name="maxStatements">0</property>
    </user-overrides>

  </default-config>


  <named-config name="hello">
  <!-- 获取四个基本的配置信息 -->
   <property name="user">root</property>
    <property name="password">root</property>
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property> 
  
  <!-- 数据库连接池管理信息的设置 ,还可以添加其他管理信息-->
  <!-- 若数据库连接池中的链接不够时,一次向数据库服务器申请多少个链接 -->
    <property name="acquireIncrement">5</property>
    
    
    <!-- 初始化数据库的数据库连接数 -->
    <property name="initialPoolSize">10</property>
    
    
    <!-- 数据库连接池中最小的数据库连接数 -->
    <property name="minPoolSize">10</property>
    
    
     <!-- 数据库连接池中最大的数据库连接数 -->
    <property name="maxPoolSize">50</property>

<!-- 数据库链接池中可以维护的最大statement的个数 -->
    <property name="maxStatements">100</property> 
    
    <!-- 每一个链接可以使用的最多的Statement的个数 -->
    <property name="maxStatementsPerConnection">2</property>

  </named-config>
</c3p0-config>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
推荐阅读