• JDBC连接池之C3P0


    1.导入jar包

    c3p0-0.9.1.jar

    mchange-commons-java-0.2.3.4(注:该jar包是c3p0数据库连接池的辅助包,没有这个包系统启动的时候会报classnotfoundexception,这是c3p0-0.9.2版本后分离出来的包,0.9.1的时候还是一个包就搞定的)

    2.获取连接

    C3P0有三种方式 实现。

    1.自己动手写代码,实现数据源

    例如:在类路径下配置一个属性文件,config.properties,内容如下:

    driverClass=xxx

    jdbcUrl=xxx

    user=xxx

    password=xxx

    ...

    然后代码中实现

    Properties props = new Properties();
    InputStream in = Thread.class.getResourceAsStream("config.properties");
    props.load(in);
    in.close();
     
    ComboPooledDataSource cpds = new ComboPooledDataSource();
    cpds.setDriverClass(props.getProperty("driverClass"));
    cpds.setJdbcUrl(props.getProperty("jdbcUrl"));
    cpds.setUser(props.getProperty("user"));
    cpds.setPassword(props.getProperty("password"));
    

      

    2.配置默认的熟悉文件

    类路径下提供一个c3p0.properties文件(不能改名)

    配置如下:

    c3p0.driverClass=com.mysql.jdbc.Driver
    c3p0.jdbcUrl=jdbc:mysql://localhost/paper_tag
    c3p0.user=root
    c3p0.password=admin

    3.路径下提供一个c3p0-config.xml文件 

    <c3p0-config>
      <default-config>   
        <property name="user">root</property>
        <property name="password">java</property>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property>
     
        <property name="initialPoolSize">10</property>
        <property name="maxIdleTime">30</property>
        <property name="maxPoolSize">100</property>
        <property name="minPoolSize">10</property>
      </default-config>
     
      <named-config name="mySource">
        <property name="user">root</property>
        <property name="password">java</property>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property>
     
        <property name="initialPoolSize">10</property>
        <property name="maxIdleTime">30</property>
        <property name="maxPoolSize">100</property>
        <property name="minPoolSize">10</property>
    </named-config> </c3p0-config>

      

    这里我采用的是最简单的第二种方式。

    package c3p0;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    public class C3P0Util {
    	
    	private static ComboPooledDataSource ds = new ComboPooledDataSource();
    	
    	public static Connection getConn() {
    		try {
    			return ds.getConnection();
    		} catch (SQLException e) {
    			throw new RuntimeException(e);
    		}
    	}
    	
    	
    
    }
    

      

    对于这种配置,如果classpath中有c3p0.properties的配置文件,代码中不需要设置连接信息,直接new ComboPooledDataSource(),他会自动读取配置文件中的配置。当然也可以使用c3p0-config.xml文件配置连接信息,使用xml作为配置信息的话,comboPoolDataSource还可以接受一个String参数,这个参数的名称是在c3p0-config.xml文件中配置,这就意味着我们可以在xml文件中可有都多个数据库源连接信息,比如可以是mysql,oracle的。

     
  • 相关阅读:
    艾伟:WinForm控件开发总结(三)认识WinForm控件常用的Attribute 狼人:
    break while(1)
    从“不太差”到“卓越”
    分享一种需求评审的方案
    高德地图 android api 实现自动定位
    Java Class Loader解析
    JAVA IO 设计模式彻底分析
    [latex]PGF 和 tikz中如何旋转图形的示例
    算法笔记之 并查集入门 POJ 1611
    Vector 和 ArrayList 哪一个更好? 为什么?
  • 原文地址:https://www.cnblogs.com/charliePU/p/5579195.html
Copyright © 2020-2023  润新知