package com.xjgs.dao; import com.mchange.v2.c3p0.C3P0ProxyConnection; import com.mchange.v2.c3p0.ComboPooledDataSource; import javax.sql.DataSource; import java.lang.reflect.Method; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCUtils { //创建数据库连接池对象 private static ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource("his"); //获取连接的方法 public static Connection getConnection() throws SQLException { return comboPooledDataSource.getConnection(); } //提供数据库连接池对象的方法 public static DataSource getDataSource(){ return comboPooledDataSource; } //释放资源的方法 public static void release(ResultSet rs, Statement stmt, Connection conn) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs = null; } release(stmt, conn); } public static void release(Statement stmt, Connection conn) { if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt = null; } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } public static Connection getRawConnection(Connection conn) { C3P0ProxyConnection cpCon = (C3P0ProxyConnection) conn; Connection unwrappedCon = null; try { Method rawConnectionMethod = JDBCUtils.class.getMethod("getRawConnection", new Class[]{Connection.class}); unwrappedCon = (Connection) cpCon.rawConnectionOperation(rawConnectionMethod, null, new Object[]{C3P0ProxyConnection.RAW_CONNECTION}); } catch (Exception ex) { //do something } } return conn; } }