C3P0连接池工具类实现步骤及方法

C3P0连接池的工具类 使用C3P0获得连接对象
连接池有一个规范接口 javax.sal.DataSourse 接口
定义了一个从连接池中获得连接的方法
getConnection();

步骤
导入jar包
在成员变量位置创建一个静态的ComboPooledDtatSource 对象
在静态代码块中使用ComboPooledDtatSource 对象 setxxxx方法 设置数据库连接
定义一个静态方法 ComboPooledDtatSource 对象中获得数据库连接 Coonection
释放资源(归还);
方法类:

package cn.sourceUntil;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/*
C3P0连接池的工具类 使用C3P0获得连接对象
连接池有一个规范接口 javax.sal.DataSourse 接口
定义了一个从连接池中获得连接的方法
getConnection();
步骤
0. 导入jar包
1. 在成员变量位置创建一个静态的ComboPooledDtatSource 对象
2. 在静态代码块中使用ComboPooledDtatSource 对象 setxxxx方法 设置数据库连接
3. 定义一个静态方法 ComboPooledDtatSource 对象中获得数据库连接 Coonection
4. 释放资源(归还);
*/
public class C3P0Utils {
//1. 在成员变量位置创建一个静态的ComboPooledDtatSource 对象
private static ComboPooledDataSource dataSource=new ComboPooledDataSource();
//2. 在静态代码块中使用ComboPooledDtatSource 对象 setxxxx方法 设置数据库连接
static {
try {
//设置注册驱动程序
dataSource.setDriverClass("com.musql.jdbc.Dringver");
//设置URL
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/day05");
//设置数据库用户名
dataSource.setUser("root");
//设置数据库密码
dataSource.setPassword("root");

} catch (PropertyVetoException e) {
e.printStackTrace();
}
}
//3. 定义一个静态方法 ComboPooledDtatSource 对象中获得数据库连接 Coonection
public static Connection getConnection(){

try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException("数据库连接失败");
}
}
//4. 释放资源(归还);
public static void close(ResultSet rs, Statement stat,Connection conn){
if (rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stat!=null){
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn!=null){
try {
conn.close();//不是关 是归还
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
测试类:

package cn.cn.sourceTest;

import cn.sourceUntil.C3P0Utils;
import org.junit.Test;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TestC3P0Until {
@Test
public void tes01() throws SQLException {
//使用C3P0工具类 获得getConnection
Connection conn = C3P0Utils.getConnection(http://www.my516.com);
System.out.println(conn);
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery("SELECT * FROM users");
System.out.println("123456");
//遍历结果集
while (rs.next()){
System.out.println(rs.getInt("cid")+rs.getString("pname")+rs.getString("pasword"));
}
//释放资源
C3P0Utils.close(rs,stat,conn);

}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
---------------------

原文地址:https://www.cnblogs.com/hyhy904/p/11053808.html

时间: 2024-10-01 04:34:00

C3P0连接池工具类实现步骤及方法的相关文章

c3p0连接池获得的Connection执行close方法后是否真的销毁Connection对象?

背景: C3P0连接池 jdbc.maxPoolSize=1 jdbc.minPoolSize=1 jdbc.initialPoolSize=1 Connection conn = dataSource.getConnection() 执行close方法后,connection就真的是关闭了而不是放回连接池里面待用. 网上找了下很多人都说使用连接池后,connection的close方法不是真正的关闭,只是放回池里待用. 我从来都喜欢追根究底,其实就是好奇心害死猫.所以也忍不住测试了. 第一次:

关于c3p0连接池的一个工具

注:需要的jar包: c3p0-0.9.1.2-jdk1.3.jar c3p0-0.9.1.2.jar c3p0-oracle-thin-extras-0.9.1.2.jar 还需要一个配置文件用来放数据库的连接数据 db.properties package cn.c3p0; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import com.mchange.v2.c3p

在jdbc基础上进阶一小步的C3p0 连接池(DBCP 不能读xml配置文件,已淘汰) 和DBUtils 中两个主要类QueryRunner和ResultSetHandler的使用

首先看C3p0这个连接池,最大优势可以自动读取默认的配置文件 <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <default-config> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl&

Maven 工程下 Spring MVC 站点配置 (三) C3P0连接池与@Autowired的应用

Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 前两篇文章主要是对站点和数据库操作配置进行了演示,如果单单实现这两个需求的话,那么基本足够,但是很多时候一个网站除了仅仅能够访问数据库是不够的,它还需要对性能以及更简化的步骤有着更多的要求,这一篇重点就是帮助我们如何去实现数据连接池管理与更简化便利的开发步骤. 如果你觉得自己能写出更高效率的连接池,那你可以不需要这篇文章了,我更建议你可以去开源组织毛遂自

网络协议 finally{ return问题 注入问题 jdbc注册驱动问题 PreparedStatement 连接池目的 1.2.1DBCP连接池 C3P0连接池 MYSQL两种方式进行实物管理 JDBC事务 DBUtils事务 ThreadLocal 事务特性 并发访问 隔离级别

1.1.1 API详解:注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 原因有2个: >导致驱动被注册2次. >强烈依赖数据库的驱动jar 解决办法: Class.forName("com.mysql.jdbc.Driver"); 1.1.2 API详解:java.sql.Statement接口: 操作sql语句,并返回相应结果 String sql = "某SQL语句&qu

c3p0连接池 &amp; JdbcUtils

一.引入jar包 二.java代码 1 @Test 2 public void testXML() throws Exception { 3 // 创建c3p0连接池核心工具类 4 // 自动加载src下c3p0的配置文件[c3p0-config.xml] 5 ComboPooledDataSource dataSource = new ComboPooledDataSource();// 使用默认的配置 6 PreparedStatement pstmt = null; 7 8 // 获取连接

c3p0连接池模板

连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用. 我现在做一个p3c0连接池的模板. 首先p3c0是开源的,所以去官网下载p3c0的jar包.在工程中导入,同时要下载你连接数据库的驱动 连接池模板代码如下: package com.fish; import java.beans.PropertyVetoException; import java.sql.Connection; import java.sql.PreparedStatement; import 

c3p0 连接池的使用

1.写xml文件 c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <default-config> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl"&

Hibernate学习2之继承映射与C3P0连接池

一.继承映射的需要 关系数据库的表之间不存在继承关系, 但为了将面向对象中的继承关系映射到关系数据库中, 可以使用以下三种继承映射策略: -每个继承层次一张表 -每个具体类一张表 -每个类一张表. 二.对比 --每个继承层次一张表: (优点)最简单.执行效率最高(因为无需进行任何关联操作) (缺点)存在冗余字段:在数据表中需要加入额外的区分各个类的字段: 同时不允许为子类成员属性对应的字段定义为not null约束. --每个具体类一张表: (优点)数据结构清晰,且可以对子类成员属性映射的字段定