MySQL——DBCP和C3P0连接池

编程入门 行业动态 更新时间:2024-10-28 10:28:14

MySQL——DBCP和C3P0<a href=https://www.elefans.com/category/jswz/34/1766187.html style=连接池"/>

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#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
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

工具类JdbcUtils_DPCP

package com.wen.lesson05.utils;import org.apachemons.dbcp2.BasicDataSource;
import org.apachemons.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();}}}
}

使用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); //idst.setString(2, "xiaoming"); //namest.setString(3, "123456"); //passwordst.setString(4, "123456789@qq"); //email//注意点: sql.Date    数据库  java.sql.Date//        util.Date  Java   new Date().getTime()  获得时间戳st.setDate(5, new java.sql.Date(new Date().getTime())); //birthdayint i = st.executeUpdate();if (i>0){System.out.println("插入成功");}} catch (SQLException e) {throw new RuntimeException(e);} finally {JdbcUtils_DPCP.release(conn, st, rs);}}
}

C3P0

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

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

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config><!--
c3p0的缺省(默认)配置
如果在代码中"ComboPooledDataSource ds=new ComboPooledDataSource();"这样写就表示使用的是c3p0的缺省(默认)--><default-config><property name="driverClass">com.mysql.cj.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbcstudy?userUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false</property><property name="user">root</property><property name="password">123456</property><property name="acquiredIncrement">5</property><property name="initialPoolSize">10</property><property name="minPoolSize">5</property><property name="maxPoolSize">20</property></default-config><!--c3p0的命名配置如果在代码中"ComboPooledDataSource ds=new ComboPooledDataSource("MySQL");"这样写就表示使用的是mysql的缺省(默认)--><named-config name="MySQL"><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbcstudy?userUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false</property><property name="user">root</property><property name="password">123456</property><property name="acquiredIncrement">5</property><property name="initialPoolSize">10</property><property name="minPoolSize">5</property><property name="maxPoolSize">20</property></named-config></c3p0-config>

工具类JdbcUtils_C3P0

package com.wen.lesson05.utils;import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apachemons.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();}}}
}

使用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); //idst.setString(2, "xiaohong"); //namest.setString(3, "123456"); //passwordst.setString(4, "123456789@qq"); //email//注意点: sql.Date    数据库  java.sql.Date//        util.Date  Java   new Date().getTime()  获得时间戳st.setDate(5, new java.sql.Date(new Date().getTime())); //birthdayint i = st.executeUpdate();if (i>0){System.out.println("插入成功");}} catch (SQLException e) {throw new RuntimeException(e);} finally {JdbcUtils_C3P0.release(conn, st, rs);}}
}

更多推荐

MySQL——DBCP和C3P0连接池

本文发布于:2023-12-07 15:14:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1671524.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:连接池   MySQL   DBCP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!