简单的C3P0数据库连接池配置方法

1先写XML配置文件,其中给出了C3P0访问数据库的一些连接信息,文件的名字为c3p0-config.xml

<c3p0-config>

    <default-config>
        <property name="driverClass">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
        <property name="jdbcUrl">jdbc:sqlserver://127.0.0.1:1433</property>
        <property name="user">stu</property>
        <property name="password">123</property>

        <property name="acquireIncrement">5</property>
        <property name="initialPoolSize">10</property>
        <property name="maxPoolSize">20</property>
    </default-config>

    <named-config name="SQLServer">
        <property name="driverClass">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
        <property name="jdbcUrl">jdbc:sqlserver://127.0.0.1:1433</property>
        <property name="user">stu</property>
        <property name="password">123</property>

        <property name="acquireIncrement">5</property>
        <property name="initialPoolSize">10</property>
        <property name="maxPoolSize">20</property>
    </named-config>


</c3p0-config>

在上面的配置中,default-config元素指明了默认的连接配置,在之后的程序中,如果没有指明使用的配置名称,或者给出的配置名称无法找到,则采用该配置。
named-config元素指明了具有名称的连接配置,名称通过name属性指明。在程序中,可以在初始化c3p0的时候,指明与name属性一致的配置信息,程序会通过提供的名字,查找该xml文件,找到相应的配置,初始化连接池。
property元素指明了每一个配置的关键参数,这些参数由name属性指明,如driverClass表示驱动类的全称,jdbcUrl对应了url等,与数据库连接池相关的配置无外乎初始的连接数量,每次增加的连接数量和连接的最高上限,这些信息从例子给出的名称中可以猜出。

2写好上述配置文件后,将它放在src目录的根目录下,注意一定是src的根目录,然后在src的对应包中,写程序,初始化连接池,这个程序的代码为:

package edu.bjfu;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * Created by dan on 2015/12/2.
 */
public class C3P0JdbcUtil {
    private static ComboPooledDataSource ds = null;

    static {
        try{
            ds = new ComboPooledDataSource("SQLServer");
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException{
        return ds.getConnection();
    }

    public static void release(Connection conn, Statement st, ResultSet rs){
        if (rs != null){
            try{
                rs.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        if (st != null){
            try{
                st.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        if (conn != null){
            try{
                conn.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }
}

程序中比较重要的是ds = new ComboPooledDataSource(“SQLServer”);这段代码,其中SQLServer就是我们刚刚在配置文件中说到的连接的名字,通过这个名字找到对应的配置信息,初始化连接池。这个类一般都声明成工具类,同时,表示数据库连接池的对象从资源使用的角度考虑,也只能有一个,所以采用了类变量表示连接池的对象。

3上层的业务类可以调用该对象的getConnection方法获取数据库的连接,在连接使用完成后,可使用release方法释放申请的资源。

package edu.bjfu;


import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Main {

    public static void main(String[] args) {

        try {
            //Connection conn = JdbcUtil.getConnection();
            //Connection conn = DbcpJdbcUtil.getConnection();
            Connection conn = C3P0JdbcUtil.getConnection();
            Statement stmt = conn.createStatement();
            String sql = "select sn,sex from s";
            ResultSet rs = stmt.executeQuery(sql);
            while(rs.next()){
                System.out.println(rs.getString("sn") + " " + rs.getString("sex"));
            }
            C3P0JdbcUtil.release(conn, stmt, rs);

        } catch (SQLException e) {
            e.printStackTrace();
        }


    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值