zoukankan      html  css  js  c++  java
  • c3p0 连接池的使用

    1、写xml文件

    c3p0-config.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:///web08</property>
            <property name="user">root</property>
            <property name="password">root</property>
            <property name="initialPoolSize">5</property>
            <property name="maxPoolSize">20</property>
        </default-config>
    
        <named-config name="itheima">
            <property name="driverClass">com.mysql.jdbc.Driver</property>
            <property name="jdbcUrl">jdbc:mysql:///web08</property>
            <property name="user">root</property>
            <property name="password">root</property>
        </named-config>
    
    
    </c3p0-config>

    2、用来获取连接的工具类

    C3P0Utils.java

    package cn.itheima.jdbc.utils;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    
    import javax.sql.DataSource;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    public class C3P0Utils {
        private static ComboPooledDataSource dataSource = new ComboPooledDataSource();//获取默认配置
        private static ComboPooledDataSource dataSource = new ComboPooledDataSource("itheima");
    
        public static DataSource getDataSource() {
            return dataSource;
        }
    
        public static Connection getConnection() {
            try {
                return dataSource.getConnection();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }

    3、测试类

    TestC3P0.java

    package cn.itheima.jdbc.test;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    
    import org.junit.Test;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    import cn.itheima.jdbc.utils.C3P0Utils;
    import cn.itheima.jdbc.utils.JDBCUtils_V3;
    
    public class TestC3P0 {
        @Test
        public void testAddUser1() {
            Connection conn = null;
            PreparedStatement pstmt = null;
            try {
                // 2.从池子中获取连接
                conn = C3P0Utils.getConnection();
                String sql = "insert into tbl_user values(null,?,?)";
                pstmt = conn.prepareStatement(sql);
                pstmt.setString(1, "吕布3");
                pstmt.setString(2, "貂蝉3");
                int rows = pstmt.executeUpdate();
                if (rows > 0) {
                    System.out.println("添加成功!");
                } else {
                    System.out.println("添加失败!");
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            } finally {
                JDBCUtils_V3.release(conn, pstmt, null);
            }
        }
    
        @Test
        public void testAddUser() {
            Connection conn = null;
            PreparedStatement pstmt = null;
            // 1.创建自定义连接池对象
            ComboPooledDataSource dataSource = new ComboPooledDataSource();// 加载默认的配置
            // ComboPooledDataSource dataSource = new
            // ComboPooledDataSource("itheima");//加载有名称的配置
            try {
                // 2.从池子中获取连接
                conn = dataSource.getConnection();
                String sql = "insert into tbl_user values(null,?,?)";
                pstmt = conn.prepareStatement(sql);
                pstmt.setString(1, "吕布2");
                pstmt.setString(2, "貂蝉2");
                int rows = pstmt.executeUpdate();
                if (rows > 0) {
                    System.out.println("添加成功!");
                } else {
                    System.out.println("添加失败!");
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            } finally {
                JDBCUtils_V3.release(conn, pstmt, null);
            }
        }
    }

    附加类JDBCUtils_V3

    package cn.itheima.jdbc.utils;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Properties;
    import java.util.ResourceBundle;
    
    /**
     * 提供获取连接和释放资源的 方法
     * 
     * @author Never Say Never
     * @date 2016年7月29日
     * @version V1.0
     */
    public class JDBCUtils_V3 {
        private static String driver;
        private static String url;
        private static String username;
        private static String password;
    
        /**
         * 静态代码块加载配置文件信息
         */
        static {
            try {
                // 1.通过当前类获取类加载器
                ClassLoader classLoader = JDBCUtils_V3.class.getClassLoader();
                // 2.通过类加载器的方法获得一个输入流
                InputStream is = classLoader.getResourceAsStream("db.properties");
                // 3.创建一个properties对象
                Properties props = new Properties();
                // 4.加载输入流
                props.load(is);
                // 5.获取相关参数的值
                driver = props.getProperty("driver");
                url = props.getProperty("url");
                username = props.getProperty("username");
                password = props.getProperty("password");
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
        /**
         * 获取连接方法
         * 
         * @return
         */
        public static Connection getConnection() {
            Connection conn = null;
            try {
                Class.forName(driver);
                conn = DriverManager.getConnection(url, username, password);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return conn;
        }
    
        /**
         * 释放资源方法
         * 
         * @param conn
         * @param pstmt
         * @param rs
         */
        public static void release(Connection conn, PreparedStatement pstmt, ResultSet rs) {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (pstmt != null) {
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    
        }
    }
  • 相关阅读:
    The Tower of Hanoi
    POJ 3259:Wormholes
    第二数学归纳法
    Josephus Problem
    想成为Java高手的25个学习目标
    How to find a cycle of length 4?
    Fabonacci Numbers
    通过参数离线安装SharePoint 2010[转]
    Sharepoint2010文档库权限问题
    BizTalk 2010 学习笔记——第一章 BizTalk 2010 概述
  • 原文地址:https://www.cnblogs.com/ms-grf/p/7044548.html
Copyright © 2011-2022 走看看