c3p0的使用代码
程序员文章站
2022-04-21 22:25:11
...
package c3p0.test; import java.beans.PropertyVetoException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import com.mchange.v2.c3p0.ComboPooledDataSource; import com.mchange.v2.c3p0.PooledDataSource; public class C3p0Test { public static void main(String[] args) { ComboPooledDataSource pool = new ComboPooledDataSource(); try { //设置数据库驱动 pool.setDriverClass( "com.mysql.jdbc.Driver" ); } catch (PropertyVetoException e) { e.printStackTrace(); } //设置数据库链接 pool.setJdbcUrl( "jdbc:mysql://127.0.0.1:3306/inss_print" ); //设置用户名 pool.setUser("root"); //设置密码 pool.setPassword("root"); //当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出 //SQLException,如设为0则无限期等待。单位毫秒。Default: 0 pool.setCheckoutTimeout(20000); //当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 pool.setAcquireIncrement(3); //连接池中保留的最小连接数 pool.setMinPoolSize(3); //连接池中保留的最大连接数 pool.setMaxPoolSize(20); //初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 pool.setInitialPoolSize(3); //最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 pool.setMaxIdleTime(60); /**因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的 时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable 等方法来提升连接测试的性能。Default: false */ pool.setTestConnectionOnCheckout(false); try { Connection connection = pool.getConnection(); showConnPoolInfo(pool); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("select * from userinfo"); while(resultSet.next()){ System.out.println(resultSet.getString("username")); } resultSet.close(); statement.close(); connection.close(); } catch (SQLException e) { e.printStackTrace(); }finally { showConnPoolInfo(pool); } } /** * 显示连接池状态 */ private static void showConnPoolInfo(ComboPooledDataSource pool){ PooledDataSource pds = (PooledDataSource) pool; if(null != pds){ try { System.out.println("------------c3p0连接池链接状态--------------"); System.out.println("c3p0连接池中 【 总共 】 连接数量:"+pds.getNumConnectionsDefaultUser()); System.out.println("c3p0连接池中 【 忙 】 连接数量:"+pds.getNumBusyConnectionsDefaultUser()); System.out.println("c3p0连接池中 【 空闲 】 连接数量:"+pds.getNumIdleConnectionsDefaultUser()); System.out.println("c3p0连接池中 【未关闭】 连接数量:"+pds.getNumUnclosedOrphanedConnectionsAllUsers()); } catch (SQLException e) { System.out.println("c3p0连接池异常!"); } } } }
上一篇: 高性能数据库连接池的内幕