zoukankan      html  css  js  c++  java
  • C3P0连接池

    步骤:

    1、引入jar包

    https://sourceforge.net/projects/c3p0/postdownload

    2、配置xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <c3p0-config>
    
        <default-config>
            <property name="driverClass">com.mysql.jdbc.Driver</property>
            <property name="jdbcUrl">jdbc:mysql://192.168.0.207:3306/mydb</property>
            <property name="user">root</property>
            <property name="password">Console.Write21</property>
            <property name="initialPoolSize">5</property>
            <property name="maxPoolSize">20</property>
        </default-config>
    
        <named-config name="mydb">
            <property name="driverClass">com.mysql.jdbc.Driver</property>
            <property name="jdbcUrl">jdbc:mysql://192.168.0.207:3306/mydb</property>
            <property name="user">root</property>
            <property name="password">Console.Write21</property>
        </named-config>
    
    
    </c3p0-config>

    3、(可选)配置工具类

    package cn.sasa.utils;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    
    import javax.sql.DataSource;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    public class C3P0Utils {
        private static DataSource dataSource = new ComboPooledDataSource();
        
        public static DataSource getDataSource() {
            return dataSource;
        }
        
        public static Connection getConnection() {
            try {
                return dataSource.getConnection();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }

    4、测试

    package cn.sasa.c3p0;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    import javax.sql.DataSource;
    
    import org.junit.jupiter.api.Test;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    import cn.sasa.utils.C3P0Utils;
    import cn.sasa.utils.DBUtils;
    
    public class C3P0Test {
    
        public static void main(String[] args) {
            Connection conn = null;
            PreparedStatement pstate = null;
            ResultSet rs = null;
            try {
                conn = C3P0Utils.getConnection();
                String sql = "select * from user where name=?";
                pstate = conn.prepareStatement(sql);
                pstate.setString(1, "test");
                rs = pstate.executeQuery();
                while (rs.next()) {
                    System.out.println(rs.getString("name"));
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            } finally {
                DBUtils.release(rs, pstate, conn);
            }
        }
    
        @Test
        public void testC3P0() {
    
            Connection conn = null;
            PreparedStatement pstate = null;
            ResultSet rs = null;
            // 连接池
            DataSource dataSource = new ComboPooledDataSource();
            try {
                conn = dataSource.getConnection();
                String sql = "select * from user where name=?";
                pstate = conn.prepareStatement(sql);
                pstate.setString(1, "test");
                rs = pstate.executeQuery();
                while (rs.next()) {
                    System.out.println(rs.getString("name"));
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            } finally {
                DBUtils.release(rs, pstate, conn);
            }
        }
    
    }

    工具类:

    package cn.sasa.utils;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ResourceBundle;
    
    public class DBUtils {
        private static Connection conn = null;
        private static String driver = null;
        private static String url = null;
        private static String user = null;
        private static String pwd = null;
        //注册驱动
        static {
            try {
                ResourceBundle bundle = ResourceBundle.getBundle("database");
                driver = bundle.getString("driver");
                url = bundle.getString("url");
                user = bundle.getString("user");
                pwd = bundle.getString("pwd");
                Class.forName(driver);
                conn = DriverManager.getConnection(url, user, pwd);
            }catch(Exception e) {
                throw new RuntimeException(e);
            }
        }
        
        //获取连接对象
        public static Connection getConnection() {
            return conn;
        }
        
        //销毁资源 查询
        public static void release(ResultSet rs, PreparedStatement state, Connection conn ) {
            if(rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(state != null) {
                try {
                    state.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        
        //销毁资源 增删改
        public static void release(PreparedStatement state, Connection conn) {
            if(state != null) {
                try {
                    state.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
  • 相关阅读:
    Django集成Markdown编辑器【附源码】
    Django+JWT实现Token认证
    Docker环境的持续部署优化实践
    2018-行远自迩,登高自卑
    SVN Hooks的介绍及使用
    Django开发密码管理表实例【附源码】
    Django+Echarts画图实例
    Django使用Signals监测model字段变化发送通知
    运维效率之数据迁移自动化
    Python之路(第三十四篇) 网络编程:验证客户端合法性
  • 原文地址:https://www.cnblogs.com/SasaL/p/10559776.html
Copyright © 2011-2022 走看看