zoukankan      html  css  js  c++  java
  • 02_c3p0之c3p0-config.xml配置案例,操作c3p0的jdbcUtil工具类的编写

     

    c3p0 也是一个开源 jdbc 连接池,我们熟悉的 Hibernate 和 Spring 框架使用的都是该数据源。

    这里获得数据源使用的方法是:ComboPooledDataSource

    它提供的构造方法有:

    通过第三个构造方法读取配置文件,它的配置文件是一个 xml 文件,也可以是一个properties 文件。

    在 c3po 中的 ComboPooledDataSource 类 提供了如下方法 :

    setDriverClass: 设置驱动使用的是

    setJdbcUrl: 设置 url

    setInitialPoolSize(int initialPoolSize)

    setPassword: 设置密码

    setUser: 设置用户名

    不适用配置文件的使用方法:

    package cn.toto.utils;

    import java.beans.PropertyVetoException;

    import java.sql.Connection;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    import javax.sql.DataSource;

    import com.mchange.v2.c3p0.ComboPooledDataSource;

    public class JdbcUtils {

        private static DataSource ds ;

        static {

           try {

               // 初始化 c3p0 连接池

               ComboPooledDataSource cpds = new ComboPooledDataSource();

               cpds.setDriverClass( "com.mysql.jdbc.Driver" );

               cpds.setJdbcUrl( "jdbc:mysql://localhost:3306/day14" );

               cpds.setUser( "root" );

               cpds.setPassword( "123456" );

    cpds.setInitialPoolSize(5);

    cpds.setMaxPoolSize(20);

               ds =cpds;

           } catch (PropertyVetoException e) {

               throw new ExceptionInInitializerError( " 属性不匹配的错误 );

    }

    }

        // 获取与指定数据的连接

        public static DataSource getSource(){

           return ds ;

    }

        // 获得与指定数据库的连接

        public static Connection getConnection() throws SQLException {

           // 从连接池返回一个连接

           return ds .getConnection();

    }

        // 释放资源

        public static void release(ResultSet rs,Statement stmt,Connection conn) {

           if (rs!= null ){

               try {

    rs.close();

               } catch (SQLException e){

    e.printStackTrace();

    }

               rs = null ;

    }

           if (stmt!= null ){

               try {

    stmt.close();

               } catch (SQLException e){

    e.printStackTrace();

    }

               stmt= null ;

    }

           if (conn!= null ){

               try {

    conn.close();

               } catch (SQLException e){

    e.printStackTrace();

    }

               conn = null ;

    }

    }

    }

    用于测试的主方法:

    package cn.toto.demo;

    import java.sql.Connection;

    import java.sql.SQLException;

    import cn.toto.utils.JdbcUtils;

    public class Demo {

        public static void main(String[] args) throws SQLException {

    Connection conn = JdbcUtils. getConnection ();

           System. out . println (conn);

    // 结果是: com.mchange.v2.c3p0.impl.NewProxyConnection@10bbf9e

    }

    }

    通过配置文件的方式读取文件。

    当通过设置配置文件 xml 时它可以自动查找,不用通过类加载的方式了。只要它的文件路径是在 classloader (类路径也可以说是 classes 下面)的路径下面。(在官方文档中可以找到配置文件)

    配置文件好后的文件是:

    <? xml version = "1.0" encoding = "UTF-8" ?>

    c3p0-config >

        default-config >

           property name = "automaticTestTable" > con_test </ property >

           property name = "checkoutTimeout" > 30000 </ property >

           property name = "idleConnectionTestPeriod" > 30 </ property >

           property name = "initialPoolSize" > 10 </ property >

           property name = "maxIdleTime" > 30 </ property >

           property name = "maxPoolSize" > 100 </ property >

           property name = "minPoolSize" > 10 </ property >

           property name = "maxStatements" > 200 </ property >

           user-overrides user = "test-user" >

               property name = "maxPoolSize" > 10 </ property >

               property name = "minPoolSize" > 1 </ property >

               property name = "maxStatements" > 0 </ property >

           </ user-overrides >

        </ default-config >

        named-config name = toto >

           property name = "initialPoolSize" > 5 </ property >

           property name = "maxPoolSize" > 20 </ property >

           property name = "driverClass" > com.mysql.jdbc.Driver </ property >

           property name = "jdbcUrl" > jdbc:mysql:// localhost :3306/day14 </ property >

           property name = "user" > root </ property >

           property name = "password" > 123456 </ property >

        </ named-config >

    </ c3p0-config >

    这时写好的 JdbcUtils 是:

    package cn.toto.utils;

    import java.sql.Connection;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    import javax.sql.DataSource ;

    import com.mchange.v2.c3p0.ComboPooledDataSource;

    public class JdbcUtils {

        private static DataSource ds ;

        static {

           //ds = new ComboPooledDataSource();// 默认的缺省的配置

           ds new ComboPooledDataSource( toto ); // 配置文件中设置的内容不用写其他的是因为它可以自动查找 classloader 下的 c3p0-config.xml 文件(要注意的是文件的名称必须是 c3p0-config.xml )如果文件的名称不是这个,将出现错误。

    }

        // 获取与指定数据的连接

        public static DataSource getSource(){

           return ds ;

    }

        // 获得与指定数据库的连接

        public static Connection getConnection() throws SQLException {

           // 从连接池返回一个连接

           return ds .getConnection();

    }

        // 释放资源

        public static void release(ResultSet rs,Statement stmt,Connection conn) {

           if (rs!= null ){

               try {

    rs.close();

               } catch (SQLException e){

    e.printStackTrace();

    }

               rs = null ;

    }

           if (stmt!= null ){

               try {

    stmt.close();

               } catch (SQLException e){

    e.printStackTrace();

    }

               stmt= null ;

    }

           if (conn!= null ){

               try {

    conn.close();

               } catch (SQLException e){

    e.printStackTrace();

    }

               conn = null ;

    }

    }

    }

  • 相关阅读:
    腾信短信接口实例
    ajax
    jquery
    生命鸡汤
    sql中事物
    ajax,一般处理程序,登陆
    CSS选择器大全
    【JavaScript】轮播图
    【DOM练习】淘宝购物车
    【DOM练习】百度历史搜索栏
  • 原文地址:https://www.cnblogs.com/xiaona19841010/p/5183926.html
Copyright © 2011-2022 走看看