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. AppWidget使用方法

    手机桌面小组件 public class AppWidget extends AppWidgetProvider { @Override public void onUpdate(Context co ...

  2. github初始化版本

    git命令上传初始化项目 (1)先去github创建自己的项目版本 (2)然后找到自己想要上传代码版本的目录$ git init $ git add ./src ./pom.xml $ git com ...

  3. sqlsugar入门(4)-修改源码支持多主键保存ISaveable

    1.查看其它接口发现少了一个最重要的SaveBuilder.此文件是存放sql模板,where条件,select解析,组装成tosqlstring的最后一个类. 添加文件 using System; ...

  4. java安全编码指南之:文件和共享目录的安全性

    目录 简介 linux下的文件基本权限 linux文件的特殊权限 Set UID 和 Set GID Sticky Bit SUID/SGID/SBIT权限设置 文件隐藏属性 特殊文件 java中在共 ...

  5. 前端之旅一:vscode调试web配置

    vscode调试web配置 第一步:安装vscode,并启动(vscode的安装包自行到其官网上下载) 第二步:在vscode上安装chrome插件 第三步:配置,启动调试 配置信息 { // Use ...

  6. php映射echarts柱状图

    多种样式柱状图 前台部分 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  7. sendfile zero-copy

    传统read/write进行网络文件传输过程当中,文件数据实际上经过四次copy操作: 硬盘->内核buf->用户buf->socket相关缓冲区->协议引擎 而sendfil ...

  8. 4. Spark在集群上运行

    *以下内容由<Spark快速大数据分析>整理所得. 读书笔记的第四部分是讲的是Spark在集群上运行的知识点. 一.Spark应用组件介绍 二.Spark在集群运行过程 三.Spark配置 ...

  9. HarmonyOS Java UI之DirectionalLayout布局

    在之前的章节中我使用的是Java 代码构建UI界面,从本节开始,将使用XML构建UI界面. 使用XML构建UI(默认你已经会在项目中创建XML布局文件)界面相对Java代码构建的好处是:结构清晰,代码 ...

  10. Tim Urban:如何选择真正适合你的职业?

    Wait But Why是一个专注于写长博客的网站,Tim Urban是网站的创始人之一.Tim Urban专注于写长论文,与时下的轻度阅读完全背道而驰,文章动辄几千甚至上万字,但令人吃惊的是却拥有惊 ...