package db;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import com.mchange.v2.c3p0.ComboPooledDataSource;/** * 数据库操作工具类 * @author lamp */public class DBUtils { private static ComboPooledDataSource ds=null; private static Connection conn=null; private static final String DRIVER = "com.mysql.jdbc.Driver"; private static final String URL = "jdbc:mysql://localhost:3306/imooc.student?useUnicode=true&characterEncoding=UTF-8"; private static final String USERNAME = "root"; private static final String PASSWORD = "lingqi.zaq"; private DBUtils(){} //静态初始化块进行初始化 static{ try { ds = new ComboPooledDataSource();//创建连接池实例 ds.setDriverClass(DRIVER);//设置连接池连接数据库所需的驱动 ds.setJdbcUrl(URL);//设置连接数据库的URL ds.setUser(USERNAME);//设置连接数据库的用户名 ds.setPassword(PASSWORD);//设置连接数据库的密码 ds.setMaxPoolSize(50);//设置连接池的最大连接数 ds.setMinPoolSize(2);//设置连接池的最小连接数 ds.setInitialPoolSize(10);//设置连接池的初始连接数 ds.setMaxStatements(100);//设置连接池的缓存Statement的最大数 } catch (Exception e) { e.printStackTrace(); } } //定义一个获取数据库连接的方法 public static Connection getConnection(){ try { conn = ds.getConnection(); } catch (SQLException e) { e.printStackTrace(); System.out.println("获取连接失败"); } return conn; } /** * 关闭数据库连接 * @param rs * @param stat * @param conn */ //释放资源 public static void close(ResultSet rs,PreparedStatement ptmt,Connection conn){ if(null != rs){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(null != ptmt){ try { ptmt.close(); } catch (SQLException e) { e.printStackTrace(); } } } //测试 public static void main(String[] args) { Connection c = DBUtils.getConnection(); if(c!=null){ System.out.println("数据库连接成功"); try { c.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ System.out.println("数据库连接失败"); } }}这是小弟的数据库连接池代码发现每次运行项目都会向数据库要好多个连接,而不是在已有的连接里面复用。知道超过最大连接数后,整个程序就卡死了是哪边没写对吗
添加回答
举报
0/150
提交
取消