C3P0数据源的使用(一)

使用C3P0数据源便捷得到Connection

作用:便捷的创建一个连接池并且获得Connect连接

前提:

  1. 需要导入c3p0-0.9.1.2.jar和mysql-connector-java-5.1.7-bin.jar两个包
  2. 自己写好连接池以及数据库的配置信息c3p0-config.xml

测试的整体结构:
C3P0数据源的使用(一)_第1张图片

放在src下的c3p0-config.xml


<c3p0-config>
    <default-config>

        <property name="driverClass">com.mysql.jdbc.Driverproperty>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/day13property>
        <property name="user">rootproperty>
        <property name="password">etronproperty>
        <property name="initialPoolSize">10property>
        <property name="maxIdleTime">30property>
        <property name="maxPoolSize">100property>
        <property name="minPoolSize">10property>



    default-config>



c3p0-config>

C3P0Util.java

package com.util;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import javax.sql.DataSource;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class C3P0Util {
    //得到一个数据源
    private static DataSource dataSource = new ComboPooledDataSource();

    //从数据源中得到有个连接对象
    public static Connection getConnection(){
        try{
            return dataSource.getConnection();
        }catch (SQLException e){
            throw new RuntimeException("服务器错误");
        }
    }

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

TestCRUD.java

package com.util;

import java.sql.Connection;
import java.sql.PreparedStatement;

public class TestCRUD {

    public static void main(String[] args){
        new TestCRUD().test1();
    }
    public void test1(){
        Connection conn = null;
        PreparedStatement ps = null;
        try {
            conn = C3P0Util.getConnection();
            ps = conn.prepareStatement("insert into account(name,money) values('ggg',2000) ");
            ps.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            C3P0Util.release(conn,ps,null);
        }
        System.out.println(conn.getClass().getName());
    }
}

控制台打印的结果
C3P0数据源的使用(一)_第2张图片

你可能感兴趣的:(数据库与数据源)