数据库---MySQL--配置c3p0连接池

啥是c3p0?

连接池 ———— c3p0 、 druid
=连接 sql数据库 【省略了自己注册驱动、连接的3条】
=拿到DataSource

1.创建c3p0-config.xml

<c3p0-config>
    <!--c3p0默认连接参数-->
    <default-config>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <!--数据库服务器路径  此处如要设置编码用到& 需转译&amp;-->
        <!--jdbc:mysql://localhost:3306/eesy?useUnicode=true&amp;characterUncoding=utf-8-->
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/eesy</property>
        <property name="user">root</property>
        <property name="password">007</property>

        <!--配置 初始化连接数-->
        <property name="initialPoolSize">5</property>
        <!--最大连接数-->
        <property name="maxPoolSize">10</property>
        <!--连接超时时间-->
        <property name="checkoutTimeout">2000</property>
    </default-config>

<!--连接池中  除以上默认的 ,还想配其他连接【如对表、选择orical等的改变】。
    default要写,为保证连接池至少有1个可正常连接。

    注:除开以上默认,标签为 name-config  name=“xxx”、
    以下连接其他表: 则all配置都和默认一样,仅修改表名:
                    url要更换的表名 demo2
 -->
    <!--cat用于在new了获取DataSource时传参找到此处-->
    <name-config name="nihong">
        <property name="driverClass">com.mysql.jdbc.Driver</property>
                                                        <!--连接nihong数据库-->
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/nihong</property>
        <property name="user">root</property>
        <property name="password">007</property>
        <property name="initialPoolSize">5</property>
        <property name="maxPoolSize">10</property>
        <property name="checkoutTimeout">2000</property>
    </name-config>

</c3p0-config>

了解:

配置文件名、标签名 不可自己改。
	我们写的代码中  根本没有读取c3p0配置文件的动作,
	则肯定是  系统自动读取————new的连接池ComboPooledDataSource读取,
	那 配置文件名、标签名 肯定是固定的不可自定义。

配置位置:
	eclipse在src下 (根路径)
	idea的maven项目,在resources下 

2.创建工具类JDBCUtils

package utils;

import com.mchange.v2.c3p0.ComboPooledDataSource;

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

/**工具方法:
 *       获取连接
 *       关流
 */
public class JDBCUtils {

    private static DataSource ds;

    static {
        //此处不传参————读取xml中默认
        ds=new ComboPooledDataSource();

        //读取标签属性name为nihong的配置
        //ds=new ComboPooledDataSource("nihong");
    }

    /**
     * 获取连接
     * @return Connection
     */
    public static Connection getCon() {
        try {
            return ds.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }


    /**
     * 关流:
     *         关2个、关3个 ————用重载
     *
     *      关流顺序:
     *          先关闭ResultSet,
     *          然后是Statement,
     *          最后是Connetion。
     *          刚好与创建相应对象时的顺序相反。
     * @param st
     * @param con
     */
    //
    public static void close2(Statement st,Connection con){
        if(st!=null){
            try {
                st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(con!=null){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }


    public static void close3(ResultSet rs, Statement st, Connection con){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        close2(st,con);
    }

}

3.创建测试类:

package utilstest;

import sun.security.mscapi.RSACipher;
import utils.JDBCUtils;

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

public class JDBCUtilsTest {
    //声明3流
    private static Connection con;
    private static PreparedStatement ps;
    private static ResultSet rs;

    public static void main(String[] args) throws SQLException {
        //搞查询
        //为3流赋值
        con = JDBCUtils.getCon();
        String sql="select * from zhanghu";
        ps=con.prepareStatement(sql);
        rs=ps.executeQuery();

        //打印结果集  就只打印姓名吧
        while (rs.next()){
            System.out.println(rs.getObject("name"));
            rs.getObject("pwd");
            rs.getObject("money");
            //列名数据类型是time也可用getObject、getString获取
        }

        JDBCUtils.close3(rs,ps,con);
    }

}

4.maven项目中的pom.xml需要依赖的包:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wn</groupId>
    <artifactId>woniuatm_0213</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>

        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>

    </dependencies>
</project>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值