相关文章推荐
刀枪不入的啄木鸟  ·  《战神4》PC版新史低138元!Steam好 ...·  7 月前    · 
风流的韭菜  ·  PRD:有道云笔记APP产品需求文档 | ...·  11 月前    · 
安静的麻辣香锅  ·  1晚73万打赏、120万人次,“云蹦迪”真能 ...·  1 年前    · 
千杯不醉的红豆  ·  特写:维港漂来一只“大灰仔”_手机新浪网·  2 年前    · 
豁达的水煮鱼  ·  【EFCORE笔记】事务基础知识_51CTO ...·  2 年前    · 
Code  ›  C3P0连接池的配置与使用[通俗易懂]开发者社区
连接池 连接池技术 c3p0
https://cloud.tencent.com/developer/article/2094955
强健的鸭蛋
2 年前
作者头像
全栈程序员站长
0 篇文章

C3P0连接池的配置与使用[通俗易懂]

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 全栈程序员必看 > C3P0连接池的配置与使用[通俗易懂]

C3P0连接池的配置与使用[通俗易懂]

作者头像
全栈程序员站长
发布 于 2022-09-05 16:43:03
442 0
发布 于 2022-09-05 16:43:03
举报

大家好,又见面了,我是你们的朋友全栈君。

1、下载c3p0-0.9.1.2.jar

下载地址:http://download.csdn.net/detail/chunxiaqiudong5/9661922

2、添加配置文件c3p0-config.xml

C3P0连接池的配置与使用[通俗易懂]

3、配置文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>  
    <!-- This is default config! -->  
    <default-config>  
        <property name="initialPoolSize">10</property>  
        <property name="maxIdleTime">30</property>  
        <property name="maxPoolSize">100</property>  
        <property name="minPoolSize">10</property>  
        <property name="maxStatements">200</property>  
    </default-config>  
    <!-- This is my config for mysql-->  
    <named-config name="mysql">  
        <property name="driverClass">com.mysql.jdbc.Driver</property>  
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=UTF8</property>  
        <property name="user">root</property>  
        <property name="password"></property>  
         <!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3-->
        <property name="initialPoolSize">10</property>
        <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0 -->  
        <property name="maxIdleTime">30</property>  
        <!--连接池中保留的最大连接数。默认值: 15 -->
        <property name="maxPoolSize">100</property> 
        <!-- 连接池中保留的最小连接数,默认为:3--> 
        <property name="minPoolSize">10</property> 
        <!--c3p0全局的PreparedStatements缓存的大小。如果maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。如果默认值: 0--> 
        <property name="maxStatements">200</property>  
        <!-- 当连接池连接耗尽时,客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。默认: 0 -->   
        <property name="checkoutTimeout" value="3000"/> 
        <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3 -->   
        <property name="acquireIncrement" value="2"/> 
        <!--定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次-->   
        <property name="acquireRetryAttempts" value="0"/>  
        <!--重新尝试的时间间隔,默认为:1000毫秒-->   
        <property name="acquireRetryDelay" value="1000" /> 
        <!--关闭连接时,是否提交未提交的事务,默认为false,即关闭连接,回滚未提交的事务 -->   
        <property name="autoCommitOnClose">false</property>  
        <!--c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试使用。默认值: null -->   
        <property name="automaticTestTable">Test</property> 
         <!--如果为false,则获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常,但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认: false-->   
        <property name="breakAfterAcquireFailure">false</property>
        <!--每60秒检查所有连接池中的空闲连接。默认值: 0,不检查 -->   
        <property name="idleConnectionTestPeriod">60</property>    
        <!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。默认值: 0 -->   
        <property name="maxStatementsPerConnection"></property> 
    </named-config>  
    <!-- This is my config for oracle -->  
    <named-config name="oracle">  
        <property name="driverClass">oracle.jdbc.driver.OracleDriver</property>  
        <property name="jdbcUrl">jdbc:oracle:thin:@localhost:1521:orcl</property>  
        <property name="user">scott</property>  
        <property name="password">liang</property>  
        <property name="initialPoolSize">10</property>  
        <property name="maxIdleTime">30</property>  
        <property name="maxPoolSize">100</property>  
        <property name="minPoolSize">10</property>  
        <property name="maxStatements">200</property>  
    </named-config>  
</c3p0-config>

4、连接池连接类

package com.xxx.utils;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JDBCUtil {
	private static DataSource dataSource=null;
	static{
		dataSource=new ComboPooledDataSource("mysql");
	 * 获取数据库连接
	 * @return
	public static Connection getConnection(){
		Connection conn=null;
		try {
			 conn=dataSource.getConnection();
		} catch (SQLException e) {
			e.printStackTrace();
		return conn;
	 * 关闭数据库连接
	 * @param conn
	public static void closeConn(Connection conn){
		try {
			if(conn!=null && conn.isClosed()){
				conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
}

5、测试

package com.xxx.test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.Test;
import com.xxx.utils.JDBCUtil;
public class TestJdbc {
	@Test
	public void test() {
		Connection conn=JDBCUtil.getConnection();
		System.out.println(conn);
		try {
			PreparedStatement stmt=conn.prepareStatement("select * from tb_user");
			ResultSet re=stmt.executeQuery();
			while(re.next()){
				String name=re.getString(2);
				System.out.println(name);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
 
推荐文章
刀枪不入的啄木鸟  ·  《战神4》PC版新史低138元!Steam好评如潮|英伟达|动作游戏|单人游戏|动作冒险游戏|战神(2018年游戏)_网易订阅
7 月前
风流的韭菜  ·  PRD:有道云笔记APP产品需求文档 | 人人都是产品经理
11 月前
安静的麻辣香锅  ·  1晚73万打赏、120万人次,“云蹦迪”真能蹦起来?-虎嗅网
1 年前
千杯不醉的红豆  ·  特写:维港漂来一只“大灰仔”_手机新浪网
2 年前
豁达的水煮鱼  ·  【EFCORE笔记】事务基础知识_51CTO博客_efcore 事务
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号