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 ...
随机推荐
- cao 啥时候能系统地复习一下数据结构 我光学数学去了
最近有功夫的话再敲敲数据结构复习复习
- ubuntu18 ssh服务器拒绝连了密码
问题 xshell 远程连接ubuntu时 解决方法 参考:链接 网上的kenghuo太多!!! 1.如果没有安装ssh服务,请先安装 sudo apt-get install openssh-ser ...
- A. Peter and Snow Blower 解析(思維、幾何)
Codeforce 613 A. Peter and Snow Blower 解析(思維.幾何) 今天我們來看看CF613A 題目連結 題目 給你一個點\(P\)和\(n\)個點形成的多邊形(照順或逆 ...
- 深度对比Apache CarbonData、Hudi和Open Delta三大开源数据湖方案
摘要:今天我们就来解构数据湖的核心需求,同时深度对比Apache CarbonData.Hudi和Open Delta三大解决方案,帮助用户更好地针对自身场景来做数据湖方案选型. 背景 我们已经看到, ...
- vue-cli中使用全局less变量
1.执行 vue add style-resources-loader 命令,选择less 2.在 vue.config.js中添加配置,注意将路径更改为自己存放less变量文件的地址 // 全局使用 ...
- 从入门到掌握 - 系统学习shell语言
简介 什么是 shell Shell是一种程序或命令行解释程序,用于解释用户直接输入的用户命令或从文件中读取的用户命令,然后将 它们传递给操作系统以进行操作或处理.要注意,这个过程是解释而不编译脚本, ...
- [Luogu P2341] [HAOI2006]受欢迎的牛 (缩点+bitset)
题面 传送门:https://www.luogu.org/problemnew/show/P2341 Solution 前排提示,本蒟蒻做法既奇葩又麻烦 我们先可以把题目转换一下. 可以把一头牛喜欢另 ...
- MIPS汇编及模拟器下载
1. 简述汇编语言发展 在计算机发展初期,人们用0-1序列来表示每一条语言,亦即二进制的机器指令 由于机器指令过于繁琐,程序员们开发出了一种新的语言,这种用符号表示的计算机语言被称为汇编语言 计算机继 ...
- 《Web接口开发与自动化测试》学习笔记(三)
一.认证系统 使用django本身自带的认证系统 1.登录admin后台 1. 先建立一个管理员用户: > python manage.py creatsuperuser 输入用户名.邮箱和密码 ...
- TRUNCATE 有约束的表
在有外键约束的情况下,truncate 表时,会报错, 我们可以设置外键检测为flase,执行完truncate命令后,再启用 SET foreign_key_checks = 0;TRUNCATE ...