• MySQL——DBCP和C3P0连接池


    DBPC:

    需要用到的包:commons-dbcp2-2.10.0.jar,commons-pool2-2.12.0.jar,commons-logging-1.2.jar

    实现:
    新建文件dbcpconfig.properties

    #连接设置
    driverClassName=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true
    username=root
    password=123456
    
    #
    initialSize=10
    
    #最大连接数量
    maxActive=50
    
    #
    maxIdle=20
    
    #
    minIdle=5
    
    #
    maxWait=60000
    #JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:【属性名=property;】
    #注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。
    connectionProperties=useUnicode=true;characterEncoding=UTF8
    
    #指定由连接池所创建的连接的自动提交(auto-commit)状态。
    defaultAutoCommit=true
    
    #driver default 指定由连接池所创建的连接的只读(read-only)状态。
    #如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)
    defaultReadOnly=
    
    #driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
    #可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
    defaultTransactionIsolation=READ_UNCOMMITTED
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    工具类JdbcUtils_DPCP

    package com.wen.lesson05.utils;
    
    import org.apache.commons.dbcp2.BasicDataSource;
    import org.apache.commons.dbcp2.BasicDataSourceFactory;
    
    import javax.sql.DataSource;
    import java.io.InputStream;
    import java.sql.*;
    import java.util.Properties;
    
    public class JdbcUtils_DPCP {
    
        private static DataSource dataSource = null;
    
        static {
            try{
                InputStream in = JdbcUtils_DPCP.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");
                Properties properties = new Properties();
                properties.load(in);
    
                //创建数据源 工厂模式——> 创建对象
                dataSource = BasicDataSourceFactory.createDataSource(properties);
    
            } catch (Exception e) {
               e.printStackTrace();
            }
        }
        //获取连接
        public static Connection getConnection() throws SQLException {
            return dataSource.getConnection(); //从数据源中获取连接
        }
        //释放链接资源
        public static void release(Connection conn, Statement st, ResultSet rs){
            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (st!=null){
                try {
                    st.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56

    使用DBPC插入数据

    package com.wen.lesson05;
    
    import com.wen.lesson02.utils.JdbcUtils;
    import com.wen.lesson05.utils.JdbcUtils_DPCP;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Date;
    
    public class TestDBCP {
        public static void main(String[] args) {
            Connection conn = null;
            PreparedStatement st = null;
            ResultSet rs = null;
    
            try {
                conn = JdbcUtils_DPCP.getConnection();
    
                //区别
                //使用?占位符代替参数
                String sql = "INSERT INTO users(`id`,`NAME`,`PASSWORD`,`email`,`birthday`) VALUES(?,?,?,?,?)";
                st = conn.prepareStatement(sql); //预编译sql,先写sql,然后不执行
    
                //手动给参数赋值
                st.setInt(1,4); //id
                st.setString(2, "xiaoming"); //name
                st.setString(3, "123456"); //password
                st.setString(4, "123456789@qq.com"); //email
                //注意点: sql.Date    数据库  java.sql.Date
                //        util.Date  Java   new Date().getTime()  获得时间戳
                st.setDate(5, new java.sql.Date(new Date().getTime())); //birthday
    
                int i = st.executeUpdate();
                if (i>0){
                    System.out.println("插入成功");
                }
    
            } catch (SQLException e) {
                throw new RuntimeException(e);
            } finally {
                JdbcUtils_DPCP.release(conn, st, rs);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    C3P0

    需要用到的包:c3p0-0.9.5.5.jar,mchange-commons-java-0.2.20.jar

    实现:
    新建文件c3p0-config.xml

    
    <c3p0-config>
        
        <default-config>
            <property name="driverClass">com.mysql.cj.jdbc.Driverproperty>
            <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbcstudy?userUnicode=true&characterEncoding=utf8&useSSL=falseproperty>
            <property name="user">rootproperty>
            <property name="password">123456property>
    
            <property name="acquiredIncrement">5property>
            <property name="initialPoolSize">10property>
            <property name="minPoolSize">5property>
            <property name="maxPoolSize">20property>
        default-config>
    
        
        <named-config name="MySQL">
            <property name="driverClass">com.mysql.jdbc.Driverproperty>
            <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbcstudy?userUnicode=true&characterEncoding=utf8&useSSL=falseproperty>
            <property name="user">rootproperty>
            <property name="password">123456property>
            <property name="acquiredIncrement">5property>
            <property name="initialPoolSize">10property>
            <property name="minPoolSize">5property>
            <property name="maxPoolSize">20property>
        named-config>
    
    c3p0-config>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    工具类JdbcUtils_C3P0

    package com.wen.lesson05.utils;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    import org.apache.commons.dbcp2.BasicDataSourceFactory;
    
    import javax.sql.CommonDataSource;
    import javax.sql.DataSource;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
    
    public class JdbcUtils_C3P0 {
    
        private static ComboPooledDataSource dataSource = null;
    
        static {
            try{
                //代码配置写法
                //dataSource = new ComboPooledDataSource();
                //dataSource.setDriverClass();
                //dataSource.setUser();
                //dataSource.setPassword();
                //dataSource.setJdbcUrl();
    
                //dataSource.setMaxPoolSize();
                //dataSource.setMinPoolSize();
    
                //创建数据源 工厂模式——> 创建对象
                dataSource = new ComboPooledDataSource("MySQL"); //配置文件写法
    
            } catch (Exception e) {
               e.printStackTrace();
            }
        }
        //获取连接
        public static Connection getConnection() throws SQLException {
            return dataSource.getConnection(); //从数据源中获取连接
        }
        //释放链接资源
        public static void release(Connection conn, Statement st, ResultSet rs){
            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (st!=null){
                try {
                    st.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66

    使用C3P0实现插入数据

    package com.wen.lesson05;
    
    import com.wen.lesson05.utils.JdbcUtils_C3P0;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Date;
    
    public class TestC3P0 {
        public static void main(String[] args) {
            Connection conn = null;
            PreparedStatement st = null;
            ResultSet rs = null;
    
            try {
                conn = JdbcUtils_C3P0.getConnection();
    
                //区别
                //使用?占位符代替参数
                String sql = "INSERT INTO users(`id`,`NAME`,`PASSWORD`,`email`,`birthday`) VALUES(?,?,?,?,?)";
                st = conn.prepareStatement(sql); //预编译sql,先写sql,然后不执行
    
                //手动给参数赋值
                st.setInt(1,5); //id
                st.setString(2, "xiaohong"); //name
                st.setString(3, "123456"); //password
                st.setString(4, "123456789@qq.com"); //email
                //注意点: sql.Date    数据库  java.sql.Date
                //        util.Date  Java   new Date().getTime()  获得时间戳
                st.setDate(5, new java.sql.Date(new Date().getTime())); //birthday
    
                int i = st.executeUpdate();
                if (i>0){
                    System.out.println("插入成功");
                }
    
            } catch (SQLException e) {
                throw new RuntimeException(e);
            } finally {
                JdbcUtils_C3P0.release(conn, st, rs);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
  • 相关阅读:
    java毕业设计基于JS的租房网站mybatis+源码+调试部署+系统+数据库+lw
    【openGauss】一种可能是目前最快的从ORACLE同步数据到MogDB(openGauss)的方式
    Linux之shell条件判断
    【C++ 学习 ㊳】- 详解 C++ 强制类型转换
    Minio
    智慧工地管理平台系统厂家哪家强|喜讯科技
    Verilog 线型wire 种类
    Mac下安装Hadoop
    前端学习路线(四)
    【Java 基础篇】深入理解Java递归:从小白到专家
  • 原文地址:https://blog.csdn.net/m0_63757342/article/details/133905586