JDBC利用C3P0数据库连接池连接数据库
作者:丶遇见 发布时间:2024-01-13 12:37:51
标签:JDBC,C3P0,数据库
JDBC之C3P0数据库连接池,供大家参考,具体内容如下
1 首先在src中创建c3p0-config.xml 配置文件,文件中内容如下(首先下载C3P0.jar工具包 并放入项目环境变量中)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<c3p0-config>
<!--下面四个是数据库连接必须需要的东西 -->
<named-config name="MySQL"> <!--为你的数据库起一个名字,我的叫MySQL -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:localhost:3306/jdbc_01</property>
<property name="user">root</property> <!--数据库账号 -->
<property name="password">root</property> <!--数据库密码 -->
<!-- 若数据库链接数量不足的时候,向数据库申请的连接数量 -->
<property name="acquireIncrement">5</property>
<!-- 初始化数据库连接池连接的数量 -->
<property name="initialPoolSize">10</property>
<!-- 数据库连接池中最小连接数 -->
<property name="minPoolSize">5</property>
<!-- 数据库连接池中最大连接数 -->
<property name="maxPoolSize">100</property>
<!-- C3P0数据库连接池可以维护的Statement的数量 -->
<property name="maxStatements">2</property>
<!-- 每个连接可同时使用Statement的数量 -->
<property name="maxStatementsPerConnection">5</property>
</named-config>
</c3p0-config>
2 创建一个工具类用于利用C3P0数据库连接池获得数据库连接 工具类如下
package cn.qhy.jdbc;
import java.io.IOException;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class MyDBUtils {
private static DataSource dataSource;
static {// 静态代码块,只执行一次
dataSource = new ComboPooledDataSource("MySQL");
}
/**
*
* @return
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
/**
* 通用的用来关闭数据有关的所有的资源的操作
*/
public static void close(Connection conn, Statement sta, ResultSet re) {
if (re != null)
try {
re.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (sta != null)
try {
sta.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (conn != null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
3 创建测试类,测试C3P0是否连接数据库(利用JUnit单元测试)
package cn.qhy.test;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
import org.junit.jupiter.api.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import cn.qhy.jdbc.MyDBUtils;
public class C3P0Test {
/**
* @throws SQLException
*
*/
@Test
public void c3p0xmlTest() throws SQLException {
Connection conn = MyDBUtils.getConnection();
System.out.println(conn);
conn.close();
}
}
结果如下
来源:https://blog.csdn.net/AAAREMIX/article/details/97493830


猜你喜欢
- 前言Vue.js 是开源的一个前端开发库,通过简洁的 API 提供高效的数据绑定和灵活的组件系统。在前端纷繁复杂的生态中,Vue.js在近年
- 什么是 channel 管道它是一个数据管道,可以往里面写数据,从里面读数据。channel 是 goroutine 之间数据通信桥梁,而且
- 在上一篇文章中实现了树莓派下对摄像头的调用,有兴趣的可以看一下:python+opencv实现摄像头调用的方法接下来,我们将使用python
- 前言undefined 和 null 的区别是个老生常谈的话题了,之前我对二者的区别只是简单理解,例如二者转成 Boolean 类型都是 f
- scatter绘画散点图代码如下:import matplotlib.pyplot as pltplt.scatter(x,y,
- 前言Tenacity是一个 Apache 2.0授权的通用重试库,用 Python 编写,用于简化向几乎所有内容添加重试行为的任务。它起源于
- 本文实例讲述了微信小程序picker组件简单用法。分享给大家供大家参考,具体如下:picker滚动选择器,现支持三种选择器,通过mode来区
- 生成全局ID的方法很多, 这里记录下一种简单的方案: 利用mysql的自增id生成全局唯一ID.1. 创建一张只需要两个字段的表:CREAT
- 有没有想过用尺子来直接量网页上的区块间距,文字行高?屏幕标尺就是干这个的。这个功能非常适合F2E在调试样式尺寸的时候使用。打开屏幕标尺,屏幕
- 1、问题描述在使用v-model指令实现输入框数据双向绑定,输入值时对应的这个变量的值也随着变化;但是这里不允许使用v-model,需要写一
- 应用场景:工作中经常遇到大量的数据需要整合、去重、按照特定格式导出等情况。如果用 Excel 操作,不仅费时费力,还不准确,有么有更高效的解
- 本文实例讲述了Python Socket实现简单TCP Server/client功能。分享给大家供大家参考,具体如下:网络上关于socke
- <script> function isIPv6(str) { return str.mat
- 快速修改mysql密码的四种方法方法1: 用SET PASSWORD命令 首先登录MySQL。 格式:mysql>
- 一、前提 这里的原则只是针对MySQL数据库,其他的数据库某些是殊途同归,某些还是存在差异。我总结的也是MySQL普遍的规则,对于某些特殊情
- 安装前的准备1.python的安装和配置在Window下:在开始菜单中找到运行输入cmd或直接搜索cmd点击进入,输入python,如果出现
- 上面两个简单的Sql,我们从表面理解,查询的最终结果应该是一样的,但实际结果却和我们想象的不一样第一条sql查询的结果有一条数据第二条sql
- python jenkins 打包构建代码# pip install python-jenkinsimport jenkinsimport
- 1.安装Oracle Client连接到Oracle的前提是在SQL Server服务器上安装Oracle Client。Oracle Cl
- 本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法、DataAdap