1 <?xml version="1.0" encoding="UTF-8"?>
2
3 -<c3p0-config>
4
5
6 -<default-config>
7
8 <property name="driverClass">com.mysql.jdbc.Driver</property>
9
10 <property name="jdbcUrl">jdbc:mysql://localhost:3306/dataSourceDemo?characterEncoding=UTF8</property>
11
12 <property name="user">root</property>
13
14 <property name="password">root</property>
15
16 <property name="maxPoolSize">15</property>
17
18 <property name="minPoolSize">3</property>
19
20 <property name="initialPoolSize">3</property>
21
22 <property name="acquireIncrement">3</property>
23
24 <property name="maxIdleTime">600</property>
25
26 <property name="checkoutTimeout">0</property>
27
28 </default-config>
29
30 </c3p0-config>

c3po-config.xml

1.导入XML文件

2.使用jdbcutils获取连接池对象

  1 import java.beans.BeanInfo;
2 import java.beans.Introspector;
3 import java.beans.PropertyDescriptor;
4 import java.sql.Connection;
5 import java.sql.PreparedStatement;
6 import java.sql.ResultSet;
7 import java.sql.ResultSetMetaData;
8 import java.sql.SQLException;
9 import java.sql.Statement;
10 import java.util.ArrayList;
11 import java.util.List;
12
13 import javax.sql.DataSource;
14
15 import com.mchange.v2.c3p0.ComboPooledDataSource;
16
17 public class JDBCUtils {
18
19 // 使用C3P0数据库连接池管理数据库连接
20 private static DataSource dataSource = new ComboPooledDataSource();
21
22 // 获取连接
23 public static Connection getConnection() throws SQLException {
24 return dataSource.getConnection();
25 }
26
27 // 关闭连接
28 public static void close(Connection conn) {
29 if (conn != null) {
30 try {
31 conn.close();
32 } catch (SQLException e) {
33 }
34 }
35 }
36
37 // 关闭statement
38 public static void close(Statement stmt) {
39 if (stmt != null) {
40 try {
41 stmt.close();
42 } catch (SQLException e) {
43 }
44 }
45 }
46
47 // 关闭结果集
48 public static void close(ResultSet rs) {
49 if (rs != null) {
50 try {
51 rs.close();
52 } catch (SQLException e) {
53 }
54 }
55 }
56
57 // 关闭结果集、statement、连接
58 public static void closeAll(ResultSet rs) {
59 if (rs == null) {
60 return;
61 }
62 try {
63 close(rs);
64 // 如果先关掉statement再关conn,会抛出“You cannot operate on a closed
65 // Statement!”的异常,导致conn没有关闭
66 close(rs.getStatement().getConnection());
67 close(rs.getStatement());
68
69 } catch (SQLException e) {
70 e.printStackTrace();
71 }
72 }
73
74 // 关闭结果集、statement
75 public static void closeResultSetAndStatement(ResultSet rs) {
76 if (rs == null) {
77 return;
78 }
79 try {
80 close(rs);
81 close(rs.getStatement());
82 } catch (SQLException e) {
83
84 }
85 }
86
87 // 执行insert、update、delete等sql语句
88 public static int executeUpdate(String sql, Object... parameters) throws SQLException {
89 Connection conn = null;
90 try {
91 conn = getConnection();
92 return executeUpdate(conn, sql, parameters);
93 } finally {
94 close(conn);
95 }
96 }
97
98 // 执行insert、update、delete等sql语句
99 public static int executeUpdate(Connection conn, String sql, Object... parameters) throws
100 SQLException {
101 PreparedStatement ps = null;
102 try {
103 ps = conn.prepareStatement(sql);
104 for (int i = 0; i < parameters.length; i++) {
105 ps.setObject(i + 1, parameters[i]);
106 }
107 return ps.executeUpdate();
108 } finally {
109 close(ps);
110 }
111 }
112
113 // 执行查询
114 public static ResultSet executeQuery(String sql, Object... parameters) throws SQLException {
115 Connection conn = null;
116 try {
117 conn = getConnection();
118 return executeQuery(conn, sql, parameters);
119 } catch (SQLException ex) {
120 close(conn);
121 throw ex;
122 }
123 }
124
125 // 执行查询
126 public static ResultSet executeQuery(Connection conn, String sql, Object... parameters) throws
127 SQLException {
128 PreparedStatement ps = null;
129 try {
130 ResultSet rs = null;
131 ps = conn.prepareStatement(sql);
132 for (int i = 0; i < parameters.length; i++) {
133 ps.setObject(i + 1, parameters[i]);
134 }
135 rs = ps.executeQuery();
136 return rs;
137 } catch (SQLException ex) {
138 close(ps);
139 throw ex;
140 }
141 }
142
143 // 回滚
144 public static void rollback(Connection conn) {
145 try {
146 conn.rollback();
147 } catch (SQLException e) {
148
149 }
150 }
151 }

JDBCUtils

jar包  c3p0

C3PO数据库连接池的更多相关文章

  1. java_JDBC,连接数据库方式,RestSet结果集,Statement,PreparedStatement,事务,批处理,数据库连接池(c3p0和Druid)、Apache-DBUtils、

    一.JDBC的概述 1.JDBC为访问不同的数据薛是供了统一的接口,为使用者屏蔽了细节问题.2. Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作 ...

  2. 数据库连接池:Druid

    转自: http://www.cnblogs.com/windlaughing/p/3287501.html Java连接数据库方法概述 java.sql提供了一些接口和类,用于支持数据库增删改查等相 ...

  3. paip.提升性能----数据库连接池以及线程池以及对象池

    paip.提升性能----数据库连接池以及线程池以及对象池 目录:数据库连接池c3po,线程池ExecutorService:Jakartacommons-pool对象池 作者Attilax  艾龙, ...

  4. 转!数据库连接池概念、种类、配置(DBCP\C3P0\JndI与Tomact配置连接池)

    数据库连接池概念.种类.配置(DBCP\C3P0\JndI与Tomact配置连接池) 一.DBCP 连接:DBCP 连接池是 Apache 软件基金组织下的一个开源连接池实现. 需要的 java 包c ...

  5. springboot数据库连接池使用策略

    springboot官方文档介绍数据库连接池的使用策略如下: Production database connections can also be auto-configured using a p ...

  6. 数据库连接池 C3p0

    数据库连接池 C3po 1 定义 本质上是个容器(集合) 存放数据库的连接容器(connection 对象) ,当系统初始化以后 容器就会创建 容器中就会申请一些连接对象 ,当用户来访问数据库的时候 ...

  7. JAVA数据库连接池的革命 -- 从BoneCP到HikariCP

    从BoneCP到HikariCP 今天笔者本想更新一下项目中使用到的BoneCP版本的.却无意发现jolbox网站打不开了.起初以为是被墙掉了,经过一番查找,居然在BoneCP的Github站看到了如 ...

  8. Spring + MyBatis中常用的数据库连接池配置总结

    Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0.可以在Spring配置文件中利用这两者中任何一个配置数据源. DBCP数据源 DBCP类包位于  ...

  9. spring配置datasource三种方式 数据库连接池

    尊重原创(原文链接):http://blog.csdn.net/kunkun378263/article/details/8506355 1.使用org.springframework.jdbc.da ...

随机推荐

  1. 如何给office2019安装visio2019

    1.关于版本,如果你的office2019推荐安装2019visio,2019office只有安装2019visio才不会互斥 下载地址是百度网盘传送,也要安装教程,可是里面的激活器用不了 https ...

  2. 设计模式:策略模式(根据参数,调用不同的service接口)

    1.定义类容器providers,当spring加载时@PostConstruct(类似构造方法),会先执行init() : 在init()中,反射"cn.jdk18"的所有带自定 ...

  3. Jenkins自动化构建PHP实列教程

    安装Jenkins 请参考群主的安装教程 进入jenkins,添加SSH server,并且安装gitlab,Generic Webhook Trigger Plugin,GitHub plugin, ...

  4. 用GitHub Pages搭建博客(二)

    本篇介绍基本GitHub Pages的搭建流程 GitHub账号及仓库创建 登录GitHub,录入用户名.邮箱.密码,创建成功后登录进入. 注册时,邮箱建议不使用QQ邮箱.因为一些第三方部署类网站不支 ...

  5. 解决pl/sql developer中数据库插入数据乱码问题

    最近学习SSM项目开发,用到oracle数据库, 使用管理软件PL/sql developer往数据库表中插入数据时记录乱码.  结果如下: 可以看到中文数据都乱码成了???????问号, 看了网上各 ...

  6. 如何制作一本《现代Javascript教程》EPUB电子书

    制作一本<现代Javascript教程>电子书学习使用 计划学习JavaScript的同学可以看过来,今天就推荐个学习JavaScript的免费教程. 教程文档来源于 https://zh ...

  7. 推动中国制造升级,汽车装配车间生产流水线3D可视化

    前言 随着<中国制造2025>的提出,制造业迎来了全新的发展机遇.更多的企业将制造业信息化技术进行广泛的应用,如 MES 系统.数字孪生以及生产管理可视化等技术的研究应用,已经成为社会各界 ...

  8. js &&与||的妙用

    &&表达式中,若前一个为false则不会执行下去,||表达式中,一直寻找到true即停止 例:成长速度为5显示1个箭头,为10显示2个箭头,为 15显示3个箭头,其余显示0个箭头var ...

  9. Linux C 获取本机所有网卡的 IP,Mask

    0 运行环境 本机系统:Windows 10 虚拟机软件:Oracle VM VirtualBox 6 虚拟机系统:Ubuntu 18 1 代码 #include <sys/ioctl.h> ...

  10. tp6.0.x 反序列化漏洞

    tp6 反序列化漏洞复现 环境 tp6.0 apache php7.3 漏洞分析 反序列化漏洞需要存在 unserialize() 作为触发条件,修改入口文件 app/controller/Index ...