C3PO数据库连接池
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数据库连接池的更多相关文章
- java_JDBC,连接数据库方式,RestSet结果集,Statement,PreparedStatement,事务,批处理,数据库连接池(c3p0和Druid)、Apache-DBUtils、
一.JDBC的概述 1.JDBC为访问不同的数据薛是供了统一的接口,为使用者屏蔽了细节问题.2. Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作 ...
- 数据库连接池:Druid
转自: http://www.cnblogs.com/windlaughing/p/3287501.html Java连接数据库方法概述 java.sql提供了一些接口和类,用于支持数据库增删改查等相 ...
- paip.提升性能----数据库连接池以及线程池以及对象池
paip.提升性能----数据库连接池以及线程池以及对象池 目录:数据库连接池c3po,线程池ExecutorService:Jakartacommons-pool对象池 作者Attilax 艾龙, ...
- 转!数据库连接池概念、种类、配置(DBCP\C3P0\JndI与Tomact配置连接池)
数据库连接池概念.种类.配置(DBCP\C3P0\JndI与Tomact配置连接池) 一.DBCP 连接:DBCP 连接池是 Apache 软件基金组织下的一个开源连接池实现. 需要的 java 包c ...
- springboot数据库连接池使用策略
springboot官方文档介绍数据库连接池的使用策略如下: Production database connections can also be auto-configured using a p ...
- 数据库连接池 C3p0
数据库连接池 C3po 1 定义 本质上是个容器(集合) 存放数据库的连接容器(connection 对象) ,当系统初始化以后 容器就会创建 容器中就会申请一些连接对象 ,当用户来访问数据库的时候 ...
- JAVA数据库连接池的革命 -- 从BoneCP到HikariCP
从BoneCP到HikariCP 今天笔者本想更新一下项目中使用到的BoneCP版本的.却无意发现jolbox网站打不开了.起初以为是被墙掉了,经过一番查找,居然在BoneCP的Github站看到了如 ...
- Spring + MyBatis中常用的数据库连接池配置总结
Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0.可以在Spring配置文件中利用这两者中任何一个配置数据源. DBCP数据源 DBCP类包位于 ...
- spring配置datasource三种方式 数据库连接池
尊重原创(原文链接):http://blog.csdn.net/kunkun378263/article/details/8506355 1.使用org.springframework.jdbc.da ...
随机推荐
- Redis---01简述目录结构与redis.conf文件
一.Redis目录结构 (当前Redis是在CentOS 7 1708 64位环境下,Redis版本为3.2.5) 进入默认的Redis安装目录/usr/local/bin,可以看见这些下图目录结构 ...
- Redis缓存雪崩和穿透的解决方法
转载自: https://blog.csdn.net/qq_35433716/article/details/86375506 如何解决缓存雪崩?如何解决缓存穿透?如何保证缓存与数据库双写时一致的问题 ...
- Luogu P6830 [IOI2020]Connecting Supertrees
题意 好复杂,我就不写了. 题解 口胡了一下,发现我居然会 IOI 的题? 首先发现有 \(3\) 一定不合法,因为连通块里面有一个环的话 \(p_{i,j}\) 最多为 \(2\),有两个环的话就存 ...
- xlwt模块,(Excel表格)
1. 安装模块 #pip install xlwt 2. 简单例子打印excel import xlwt # 创建一个workbook 设置编码 workbook = xlwt.Workbook(en ...
- uniapp微信授权操作后事件不触发
微信小程序官网代码 <button form-type="submit" open-type="getUserInfo" bindgetuserinfo= ...
- C++语言学习之STL 的组成
STL有三大核心部分:容器(Container).算法(Algorithms).迭代器(Iterator),容器适配器(container adaptor),函数对象(functor),除此之外还有S ...
- Centos7安 装python3+Selenium+chrome+chromedriver
Centos7安装python3+Selenium+chrome+chromedriver详细python2和python3共存,Selenium错误的处理更新Centos源 wget -O /etc ...
- XJOI NOIP501/511训练22 ttt学字符串
ttt学字符串 题目大意 大法师ttt 最近在学习字符串,有一天他看到魔力xtx左手拿着A字符串,右手拿着B字符串,两个字符串的长度都是一样的,而且都由abc三种字符构成,大法师ttt的灵力值为C,现 ...
- Java_流相关
java.io包中重要的5个类3个接口 类名 说明 File 文件类 InputStream 字节流输入 OutputStream 字节流输出 Reader 字符输入流 Writer 字符输出流 Cl ...
- Ubuntu 18.04 Java JDK/JRE 安装命令
安装默认版本 sudo apt install default-jdk Java 8 sudo apt install openjdk-8-jdk 如果我们在服务器上安装了多个Java版本,我们可以使 ...