eclipse中使用c3p0配置多个数据库链接

1:c3p0-config.xml(如下配置了2个数据库的链接  第一个是默认的库,第二个是指定的库)mysql

<?xml version="1.0" encoding="UTF-8" ?>
<c3p0-config>
    <default-config>
        <property name="jdbcUrl">
            <![CDATA[jdbc:mysql:///demo1?user=root&password=1234546&useUnicode=true&characterEncoding=UTF8]]>
        </property>

    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <!--链接池中保留的最大链接数。默认值: 15 -->
    <property name="maxPoolSize">20</property>
    <!-- 链接池中保留的最小链接数,默认为:3 -->
    <property name="minPoolSize">2</property>
    <!-- 初始化链接池中的链接数,取值应在minPoolSize与maxPoolSize之间,默认为3 -->
    <property name="initialPoolSize">10</property>sql

    <!--最大空闲时间,60秒内未使用则链接被丢弃。若为0则永不丢弃。默认值: 0 -->
    <property name="maxIdleTime">60</property>数据库

    <!-- 当链接池链接耗尽时,客户端调用getConnection()后等待获取新链接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。默认: 0 -->
    <property name="checkoutTimeout">3000</property>缓存

    <!--当链接池中的链接耗尽的时候c3p0一次同时获取的链接数。默认值: 3 -->
    <property name="acquireIncrement" >2</property>测试

    <!--定义在从数据库获取新链接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次 -->
    <property name="acquireRetryAttempts">0</property>ui

    <!--从新尝试的时间间隔,默认为:1000毫秒 -->
    <property name="acquireRetryDelay">1000</property>spa

    <!--关闭链接时,是否提交未提交的事务,默认为false,即关闭链接,回滚未提交的事务 -->
    <property name="autoCommitOnClose">false</property>线程

    <!--c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。若是定义了这个参数那么属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操做,它将只供c3p0测试使用。默认值: null -->
    <property name="automaticTestTable">Test</property>code

    <!--若是为false,则获取链接失败将会引发全部等待链接池来获取链接的线程抛出异常,可是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取链接。若是设为true,那么在尝试获取链接失败后该数据源将申明已断开并永久关闭。默认: false -->
    <property name="breakAfterAcquireFailure">false</property>xml

    <!--每60秒检查全部链接池中的空闲链接。默认值: 0,不检查 -->
    <property name="idleConnectionTestPeriod">60</property>
    <!--c3p0全局的PreparedStatements缓存的大小。若是maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。若是默认值:0 -->
    <property name="maxStatements">100</property>
    <!--maxStatementsPerConnection定义了链接池内单个链接所拥有的最大缓存statements数。默认值: 0 -->

 </default-config>
    
    
    
    <!-- 配置第二个数据库链接 -->
    <named-config name="a">
        <property name="jdbcUrl">
            <![CDATA[jdbc:mysql://localhost:3306/a?user=root&password=123456&useUnicode=true&characterEncoding=UTF8]]>
        </property>

<property name="driverClass">com.mysql.jdbc.Driver</property>
    <!--链接池中保留的最大链接数。默认值: 15 -->
    <property name="maxPoolSize">20</property>
    <!-- 链接池中保留的最小链接数,默认为:3 -->
    <property name="minPoolSize">2</property>
    <!-- 初始化链接池中的链接数,取值应在minPoolSize与maxPoolSize之间,默认为3 -->
    <property name="initialPoolSize">10</property>

    <!--最大空闲时间,60秒内未使用则链接被丢弃。若为0则永不丢弃。默认值: 0 -->
    <property name="maxIdleTime">60</property>

    <!-- 当链接池链接耗尽时,客户端调用getConnection()后等待获取新链接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。默认: 0 -->
    <property name="checkoutTimeout">3000</property>

    <!--当链接池中的链接耗尽的时候c3p0一次同时获取的链接数。默认值: 3 -->
    <property name="acquireIncrement" >2</property>

    <!--定义在从数据库获取新链接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次 -->
    <property name="acquireRetryAttempts">0</property>

    <!--从新尝试的时间间隔,默认为:1000毫秒 -->
    <property name="acquireRetryDelay">1000</property>

    <!--关闭链接时,是否提交未提交的事务,默认为false,即关闭链接,回滚未提交的事务 -->
    <property name="autoCommitOnClose">false</property>

    <!--c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。若是定义了这个参数那么属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操做,它将只供c3p0测试使用。默认值: null -->
    <property name="automaticTestTable">Test</property>

    <!--若是为false,则获取链接失败将会引发全部等待链接池来获取链接的线程抛出异常,可是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取链接。若是设为true,那么在尝试获取链接失败后该数据源将申明已断开并永久关闭。默认: false -->
    <property name="breakAfterAcquireFailure">false</property>

    <!--每60秒检查全部链接池中的空闲链接。默认值: 0,不检查 -->
    <property name="idleConnectionTestPeriod">60</property>
    <!--c3p0全局的PreparedStatements缓存的大小。若是maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。若是默认值:0 -->
    <property name="maxStatements">100</property>
    <!--maxStatementsPerConnection定义了链接池内单个链接所拥有的最大缓存statements数。默认值: 0 -->

    </named-config>  
</c3p0-config>

2:链接时选择数据库

 //默认的数据库,这里不须要参数,c3p0能够自动读取配置文件中的默认的数据库  
            ComboPooledDataSource cpds = new ComboPooledDataSource();  
            con = cpds.getConnection();  




 //指定的数据库,须要参数(数据库名),c3p0才能够读取配置文件中的指定的数据库  
            ComboPooledDataSource cpds = new ComboPooledDataSource("a");  
            con = cpds.getConnection(); 

若是在运行时出现如下的报错:

 

则看你配置中是否有出现过这样的状况,出错缘由是下述配置方式value值类型默认为String类型,所以出错
 <property name="initialPoolSize"  value="10">

改为下述的样式就能够了

<property name="initialPoolSize">10</property>
相关文章
相关标签/搜索