c3p0数据库连接池问题

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("数据库连接失败");

}

}

}


这是小弟的数据库连接池代码

发现每次运行项目都会向数据库要好多个连接,而不是在已有的连接里面复用。

知道超过最大连接数后,整个程序就卡死了


是哪边没写对吗


慕祈
浏览 1457回答 0
0回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java