首先简单了解一下JDBC和c3p0

Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate、Spring等。

在JDBC项目中,如果需要多个连接,如果一直获取连接再断开连接,会造成资源的极大浪费和占用。而在c3p0项目中,c3p0它有一个数据库池是用来管理客户端和数据库连接(Connection),有了这个池我们就不用自己来创建Connection,也不用担心频繁的连接断开操作造成的系统资源浪费很大,通过池来获取Connection对象,当使用完后,进行的资源释放c3po_utils.release(rs,conn,pstm)并不是直接把进程直接关掉,而是把从连接池占用的资源又还回去给池。

配置c3p0

首先

  下载官网c3p0:https://sourceforge.net/projects/c3p0/

  打开下载好的c3p0文件夹下的lib目录,可以看到c3p0-0.9.5.5.jar和mchange-commons-java-0.2.19.jar两个jar包

这里以IDEA为例

第二步,成功导入包后,我们配置一下c3p0的配置文件,c3p0不在properties文件中配置,而是在xml中配置

  在src下新建c3p0_config.xml文件

在新建好的c3p0_config.xml中加入配置

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!-- 默认配置,如果没有指定则使用这个配置 -->
<default-config>
  //以下是数据库用户名、密码、被操作的数据表名地址、驱动类
<property name="user">root</property>
<property name="password">root</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/users</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
  //最大连接数、最小连接数、一次增长个数、初始可连接数
<property name="maxPoolSize">100</property>
<property name="minPoolSize">2</property>
<property name="acquireIncrement">5</property>
<property name="initialPoolSize">3</property>
  //最大等待连接时间、空闲连接测试个数、最大空闲时间、最大预缓存数  
<property name="checkoutTimeout">30000</property>
<property name="idleConnectionTestPeriod">30</property>
<property name="maxIdleTime">30</property>
<property name="maxStatements">200</property>
</default-config> <!-- 命名的配置,可以通过方法调用实现 -->
<named-config name="Mysql">
<property name="user">root</property>
<property name="password">root</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/users?useUnicode=true&amp;characterEncodeing=utf8&amp;useSSL=true</property>
<property name="driverClass">com.mysql.jdbc.Driver</property> <!-- 如果池中数据连接不够时一次增长多少个 -->
<property name="acquireIncrement">5</property> <!-- 初始化数据库连接池时连接的数量 -->
<property name="initialPoolSize">20</property> <!-- 数据库连接池中的最大的数据库连接数 -->
<property name="maxPoolSize">25</property> <!-- 数据库连接池中的最小的数据库连接数 -->
<property name="minPoolSize">5</property>
</named-config>
</c3p0-config>

编写c3p0工具类utils

package com.lsq.Utils_Study.Utils;
import com.mchange.v2.c3p0.ComboPooledDataSource;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class c3p0_Utils {
public static DataSource dataSource = null; static {
try {
//创建数据源工厂模式
dataSource = new ComboPooledDataSource("Mysql");//配置文件写法
}catch (Exception e){
e.printStackTrace();
}
}
//获取连接
public static Connection getConnection() throws SQLException{
return dataSource.getConnection();//从数据源中获取连接
}
//释放系统资源
public static void release(ResultSet rs, Connection conn, PreparedStatement pstm){
if (rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pstm!=null){
try {
pstm.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

测试c3p0连接是否成功

package com.lsq;

import com.lsq.Utils_Study.Utils.c3p0_Utils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class c3p0_test {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rs = null; try {
conn = c3p0_Utils.getConnection();
String sql = "select * from users where id=?";
pstm = conn.prepareStatement(sql);
pstm.setInt(1,1);
rs = pstm.executeQuery();
if (rs.next()){
System.out.println("查询成功");
System.out.println(rs.getString("NAME"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
c3p0_Utils.release(rs,conn,pstm);
}
}
}

 

c3p0的配置及简单应用的更多相关文章

  1. Win8.1下FreeImage.lib库的配置和简单使用(转)

    转自http://www.codeweblog.com/win8-1下freeimage-lib库的配置和简单使用/ 首先,你可以从这里获取FreeImage的完整库文件(访问密码 9a5e). 配置 ...

  2. c3p0详细配置

    c3p0详细配置 官方文档 : http://www.mchange.com/projects/c3p0/index.html <c3p0-config> <default-conf ...

  3. 开源IDE CodeBlocks的下载安装、配置、简单编程

    如果没有集成开发环境(IDE),在linux下开发程序将非常繁琐,IDE是指将编辑.编译.调试等功能集成在一个桌面环境上,这样就大大方便了用户.IDE一般包括代码编辑器.编译器.调试器和图形界面用户工 ...

  4. Solr配置与简单Demo[转]

    Solr配置与简单Demo 简介: solr是基于Lucene Java搜索库的企业级全文搜索引擎,目前是apache的一个项目.它的官方网址在http://lucene.apache.org/sol ...

  5. log4net日志的配置及简单应用

    在程序运行中,往往会出现各种出乎开发人员意料的异常或者错误,所以,记录详细的程序运行日志信息,有利于开发人员和运维人员排查异常信息,提高工作效率.而本菜鸟在大神推荐和指导下使用log4net这一插件工 ...

  6. CodeBlocks的下载安装、配置、简单编程

    CodeBlocks的下载安装.配置.简单编程 IDE简介 http://www.baidu.com/s?wd=codeblocks ,这里只是介绍Windows平台下的IDE环境配置. CodeBl ...

  7. asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程

    最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...

  8. go语言的安装、环境变量配置及简单使用

    go语言的安装.环境变量配置及简单使用 1.安装git并且配置在path中,默认就勾选了 下载地址https://git-scm.com/download/win 2.下载安装visualstudio ...

  9. ssdb主从及双主模型配置和简单管理

    ssdb主从及双主模型配置和简单管理 levelDB是一个key->value 的数据存储库,其只能在本地保存数据,支持持久化,并且支持保存非常大的数据,单机redis在保存较大数据的时候数十G ...

  10. InteliiJ IDEA的安装配置与简单使用

    小Alan前段时间一直在家里搬砖,已经很久没有接触技术了,从今天开始重拾技术,工欲善其事,必先利其器,以前在做Java开发的时候最常用的IDE就是Eclipse莫属了,不过随着岁月的流逝,在2016年 ...

随机推荐

  1. WinForm分辨率适应-高DPI自动缩放

    https://www.cnblogs.com/alittlecooing/p/WinForm-HighDPI.html 新建app.manifest文件后,去掉注释就可

  2. luffy前端配置and跨域

    1. 安装axios 命令:npm install axios main.js内配置并使用 import axios from 'axios'app.config.globalProperties.$ ...

  3. 在 Sitecore 里使用 Solr 搜索 SortOrder 关联的 Item

    在 C# 使用 Solr 搜索 sitecore 的配置信息文件可直接丢进 <Instance>\App_Config 下,sitecore 会自动检测配置文件更新并加载到内存中. 通常情 ...

  4. 微软NewBing真是Niubility

    这是本人2012年的拙作:           晨兮,闻风雨,后而雷鸣电闪.迟不可再三,若故无食.然何如耶?雨大风狂,单车奈何?公交卡空,恐时不予我也.不免叹也,天亦不予我!         而后出, ...

  5. 11.1/2 鼠标显示问题(harib08a)11.2 实现画面外的支持(harib08b)

    ps:能力有限,若有错误及纰漏欢迎指正.交流 11.1 鼠标显示问题(harib08a) 存在问题: ​ 在harib07d中鼠标移动到最右侧后就不能再往右移了 解决办法: 将 if (mx > ...

  6. ASP.NET Core - 选型系统之选型配置

    1. 选项 前面讲完了.NET Core 下的配置系统,我们可以通过 IConfiguration 服务从各种来源的配置中读取到配置信息,但是每次要用的时候都通过 Iconfiguration 读取配 ...

  7. MyBatis缓存机制[NO]

    前言 MyBatis是常见的Java数据库访问层框架.在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足之处,在使用中容易引起脏数据,形成一些潜在 ...

  8. IPv4已正式用尽

    网际协议版本4 (英语:Internet Protocol version 4,缩写:IPv4,又称互联网通信协议第四版)是网际协议开发过程中的第四个修订版本,也是此协议第一个被广泛部署和使用的版本. ...

  9. 二进制安装Kubernetes(k8s) v1.24.1 IPv4/IPv6双栈

    二进制安装Kubernetes(k8s) v1.24.1 IPv4/IPv6双栈 Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes二进制安装 后续尽可能第一时间更新 ...

  10. MySQL匿名空用户名处理

    问题描述:公司漏扫发现数据库内出现空用户名及密码,需要对这些用户进行整改 1.首先出现了疑问,这些空的用户名是怎么出现的,而且不附带密码. 2.可以手动这样创建这样的用户名和密码形式么. 3.如果能这 ...