数据库连接池(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";
	}

猜你喜欢

转载自blog.csdn.net/zhang19903848257/article/details/107145830