数据库连接池(2)C3P0连接池

c3p0

下载网址

https://sourceforge.net/projects/c3p0/

导入连接池

因为c3p0还依赖一个mchange的一个jar包,所以也需要导入,不然会报错
右键Build Path

操作步骤

  1. 导入两个jar包
  2. 定义成员数据源 private static ComboPooledDataSource ds;
  3. 在静态代码块中进行数据源初始化

调用

con = C3P0DateSource.getConnection();

关闭

finally {
			
			C3P0DateSource.close(pstmtTwo, pstmtTwo, con);
		}

封装的c3p0数据源代码

package jdbc;

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

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0DateSource {
	private static final String connectionUrl = "jdbc:mysql://localhost:3306/web01?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8";
	private static final String user = "root";
	private static final String passWord = "121156";
	//定义成员数据源
	private static ComboPooledDataSource ds;
	
	static {
		//数据源初始化
	
		try {
			ds = new ComboPooledDataSource();
			ds.setDriverClass("com.mysql.cj.jdbc.Driver");
			ds.setJdbcUrl(connectionUrl);
			ds.setUser(user);
			ds.setPassword(passWord);
			
			//初始连接数
			ds.setInitialPoolSize(5);
			//最大链接个数
			ds.setMaxPoolSize(20);
			//等等还有许多
		} catch (PropertyVetoException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	public static Connection getConnection() {
		try {
			return ds.getConnection();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	
	private static void closeConnection(Connection con) {
		try {
			if (con != null)
				con.close();
			//这里会把链接归还给jdbc连接池,并不是真正的断开链接
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}

使用

//获取字段名
	public static void acquireFiled(String tableName) {
		Connection con = null;
		PreparedStatement pstmtOne = null;
		ResultSet rs = null;
		ResultSetMetaData rsmd =null;
		try {
			con = UtilityC3P0.getConnection();
			// con.setAutoCommit(false); //开启事务 true自动提交 false手动提交
			String sql = "SELECT*FROM"+" "+tableName;
			System.out.println(sql);
			pstmtOne = con.prepareStatement(sql);
			// 4.查询 获取返回的数据的结果集
			rsmd = pstmtOne.getMetaData();// executeXXX
			// next() 用来查询有没有数据 每次调用获取一行,有数据返回true,没有返回false;
			// 和iterator遍历器有点像
			System.out.println(rsmd.getColumnName(1));
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 因为此时我们需要关闭两个pstmt,传递两个pstmt参数,所以我们需要完善我们的工具类
			// UtilityC3P0.close(pstmtTwo, pstmtTwo, con);
			UtilityC3P0.close(con);
		}
//		return "null";
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

See you !

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值