正文之前

在之前的文章讲到了传统的JDBC连接MySQL的方式,但是这样的方式在进行多个连接时,就显得效率低下,明显不如连接池的效率,所以我们这次来讲解一下JDBC连接池之一:c3p0


正文

1. 准备工作

  • IntelliJ IDEA
  • c3p0-0.9.5.2(jar)
  • MySQL

2. 配置 c3p0-config.xml

default-config

在配置之前,需要先进行建立数据库的工作,本文还是采用上篇文章中的名为 customer 的数据库

然后在工程的 src 目录下新建一个名为 c3p0-config 的XML文件(文件名不能自定义)

然后开始配置:

        <!-- 数据库地址 -->
<property name="jdbcUrl">jdbc:mysql://localhost:3306/customer</property>
<!-- 数据库驱动 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<!-- 用户名 -->
<property name="user">root</property>
<!-- 密码 -->
<property name="password">3865933</property>

先写基本的数据库信息,然后我们再来写常用的连接池属性,若要查询全部属性,可阅读官网指南,属性也包含于中:

        <!-- 连接池初始化时创建的连接数 -->
<property name="initialPoolSize">1</property>
<!-- 连接池中的最小连接数 -->
<property name="minPoolSize">1</property>
<!-- 连接池中的最小连接数 -->
<property name="maxPoolSize">2</property>
<!-- 无空闲连接可用时,可一次性创建新连接的数量 -->
<property name="acquireIncrement">1</property>
<!-- 获取数据库连接失败后重复尝试的次数 -->
<property name="acquireRetryAttempts">1</property>
<!-- 两次连接的间隔时间,单位为毫秒 -->
<property name = "acquireRetryDelay">1000</property>

给出完整的文件图片:

named-config

可以添加 named-config 来增加数据库配置,内容与default-config一致,我连接了另一个数据库 product :

3. 写个demo

先搞定数据源:

    private static ComboPooledDataSource dataSource1 = new ComboPooledDataSource("test");
private static ComboPooledDataSource dataSource2 = new ComboPooledDataSource();

根据数据源,进行连接

    private static void getConnection(){
try{
Connection connection = dataSource1.getConnection();
System.out.println("连接数据库 product 成功!");
connection.close();
System.out.println("数据库连接已关闭!");
}catch(Exception e){
System.out.println("连接数据库失败!");
}
try{
Connection connection = dataSource2.getConnection();
System.out.println("连接数据库 customer 成功!");
connection.close();
System.out.println("数据库连接已关闭!");
}catch(Exception e){
System.out.println("连接数据库失败!");
}
}
public static void main(String[] args){
getConnection();
}

运行结果:

如果需要有多个连接,使用连接池是不二之选,关于c3p0的讲解到此为止了,谢谢。

【JavaWeb】c3p0连接池与MySQL的更多相关文章

  1. dbcp/c3p0连接池设置mysql会话变量

    我们有几个计算风控值的定时任务,几乎每隔5秒会更新所有账户的当前总资产并以此通知风控,每隔一小时就产生一两个G的binlog,几十台服务器折腾..数据库是公用的,代码是通过工具自动生成的,直接修改流程 ...

  2. 网络协议 finally{ return问题 注入问题 jdbc注册驱动问题 PreparedStatement 连接池目的 1.2.1DBCP连接池 C3P0连接池 MYSQL两种方式进行实物管理 JDBC事务 DBUtils事务 ThreadLocal 事务特性 并发访问 隔离级别

    1.1.1 API详解:注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 原因有2个: >导致驱动被注册2 ...

  3. Java测试开发--MySql之C3P0连接池(八)

    连接池C3P0! 连接池技术的目的:解决建立数据库连接耗费资源和时间很多的问题,提高性能 ! 下面以案例演示下C3P0的操作流程. 1.测试准备: ①MySql数据库一枚②database名为myte ...

  4. c3p0连接池]

    <c3p0-config> <!-- 默认配置 --> <default-config> <property name="jdbcUrl" ...

  5. c3p0连接池获得的Connection执行close方法后是否真的销毁Connection对象?

    问题描述: jfinal做的api系统中,在正常调用接口一段时间后,突然再调用接口的时候,该请求无响应api系统后台也无错误信息 (就是刚开始接口调用是正常的,突然就无响应了) 于是啊,就开始找错误. ...

  6. C3P0连接池问题,APPARENT DEADLOCK!!! Creating emergency..... [问题点数:20分,结帖人lovekong]

    采用c3p0连接池,每次调试程序,第一次访问时(Tomcat服务器重启后再访问)都会出现以下错误,然后连接库需要很长时间,最终是可以连上的,之后再访问就没问题了,请高手们会诊一下,希望能帮小弟解决此问 ...

  7. HQL查询及Hibernate对c3p0连接池的支持

    //HQL查询 // auto-import要设置true,如果是false,写HQL时要指定类的全名 //查询全部列 Query query = session.createQuery(" ...

  8. 使用c3p0连接池

    首先我们需要知道为什么要使用连接池:因为jdbc没有保持连接的能力,一旦超过一定时间没有使用(大约几百毫秒),连接就会被自动释放掉,每次新建连接都需要140毫秒左右的时间而C3P0连接池会池化连接,随 ...

  9. Maven 工程下 Spring MVC 站点配置 (三) C3P0连接池与@Autowired的应用

    Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 前两篇文章主要是对站点和数据库操作配置进行了演示,如果单 ...

随机推荐

  1. YUI3组件框架之plugin

    plugin相关源码分析: plugin功能包括如下几个模块, 简单分析如下: pluginhost-base 维护对象 this._plugins = {}: 并提供方法: plug.unplug. ...

  2. iOS ASIHTTPRequest详解

    ASIHTTPRequest对CFNetwork API进行了封装,并且使用起来非常简单,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中.ASIHTTPRe ...

  3. 一句话 Servlet

    Servlet是用来完成B/S架构下,客户端请求的响应处理. web.xml其实就是servlet的一个配置文件,通过他来寻找对应的servlet

  4. Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置

    Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置 ============================== ©Copyright 蕃薯耀 2017 ...

  5. Django将request对象传入模板配置

    对于很多时候,需要从模板中获取很请求中很多内容,比如当前请求的url,当前的session变量中的某个值,这时候我们可以通过配置可将request对象传递进模板. django1.10版本: sett ...

  6. linux mysql 修改 UTF-8编码

    版本大于5.5 [mysqld]下添加的应该为:   character-set-server=utf8   collation-server=utf8_general_ci 版本小于5.5 [cli ...

  7. Django_上传图片和模版获取图片

    需求: 在Django中,上传图片,存入数据库中的文件的路径,而不是图片本身,也就是说,图片等数据静态文件都可以放到第三方服务器上,我想在把图片保存到Django本地项目中,并可以通过Django自带 ...

  8. python_hello word!

    什么是编程? --模拟现实世界,跨时间,地点,不受外界坏境干扰到的虚拟现实世界,数字化的可定制化的世界 编程语言有哪些? python ,java,php  ,c++,等 python开发环境准备工作 ...

  9. Linux指令--rm, rmdir

    rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除.对于链接文件,只是删除了链接,原有文件均保持不变.rm是一个危险的命令,使用的时 ...

  10. myeclipse环境搭建

    公司来了几个新人,老是在教他们环境搭建这些,每次在帮他们调试代码的时候老是不厌其烦的看着他们坐等myeclipse编译了,校验了什么的,而且在编码的时候也不使用快捷键,然后我就只能默默的坐回去了.为了 ...