- package dbutils;
- import java.beans.PropertyVetoException;
- import java.io.IOException;
- import java.io.InputStream;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.Properties;
- import javax.management.InstanceAlreadyExistsException;
- import org.apache.commons.dbcp.BasicDataSource;
- import org.apache.commons.dbcp.BasicDataSourceFactory;
- import org.apache.commons.dbcp.DataSourceConnectionFactory;
- import com.mchange.v2.c3p0.ComboPooledDataSource;
- import com.mchange.v2.c3p0.PoolBackedDataSource;
- /**
- * JDBC 工具类
- *
- * @author Administrator
- *
- */
- public class C3p0Utils {
- /*
- * 连接数据库的用户名
- */
- private String user = null;
- /*
- * 连接数据库的密码
- */
- private String password = null;
- /*
- * 连接数据库的地址
- */
- private String url = null;
- /*
- * 连接数据的驱动
- */
- private String driver = null;
- /*
- * 数据库链接工厂
- */
- private ComboPooledDataSource c3p0 = null;
- // 写构造函数 让其不能通过 new 来创建对象
- private C3p0Utils() {InputStream in = C3p0Utils.class.getClassLoader().getResourceAsStream(
- "db.properties");
- Properties p = new Properties();
- try {
- p.load(in);
- user = p.get("user").toString();
- password = p.get("password").toString();
- url = p.get("url").toString();
- driver = p.get("driver").toString();
- c3p0 = new ComboPooledDataSource();
- // 设置用户名
- //basicDataSource.setUsername(user);
- c3p0.setUser(user);
- // 设置密码
- //basicDataSource.setPassword(password);
- c3p0.setPassword(password);
- // 设置地址
- //basicDataSource.setUrl(url);
- c3p0.setJdbcUrl(url);
- // 设置数据库驱动
- //basicDataSource.setDriverClassName(driver);
- c3p0.setDriverClass(driver);
- /*
- * // 配置数据库的链接 // 初始化连接: 连接池启动时创建的初始化连接数量, 1.2 版本后支持
- * c3p0.setInitialSize(10);
- * // 最大活动连接: 连接池在同一时间能够分配的最大活动连接的数量, 如果设置为非正数则表示不限制
- * c3p0.setMaxActive(20);
- * // 最大空闲连接: 连接池中容许保持空闲状态的最大连接数量, 超过的空闲连接将被释放, 如果设置为负数表示不限制
- * c3p0.setMaxIdle(10);
- * // 最小空闲连接: 连接池中容许保持空闲状态的最小连接数量, 低于这个数量将创建新的连接, 如果设置为 0 则不创建
- * c3p0.setMinIdle(10);
- */
- // 新建一个数据库链接工厂 进行生产
- //ConnectionFactory = new DataSourceConnectionFactory(basicDataSource);
- Class.forName(driver);
- } catch (IOException e) {
- System.out.println("配置文件读取失败!!!");
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- System.out.println("连接驱动信息失败");
- e.printStackTrace();
- } catch (PropertyVetoException e) {
- e.printStackTrace();
- }
- }
- private static C3p0Utils instance = null;
- // 通过单例模式 为了防止内存消耗过度, 当存在时, 返回自己, 不存在时, 就创建, 只能 new 一个
- public static C3p0Utils getInstance() {
- if (instance == null) {
- // 连接数据库
- instance = new C3p0Utils();
- }
- return instance;
- }
- /**
- * 获取数据库的连接
- *
- * @return java.sql.Connection
- */
- public Connection getConnection() {
- Connection conn = null;
- try {
- // 连接数据库
- // conn = DriverManager.getConnection(url, user, password);
- conn = c3p0.getConnection();
- } catch (SQLException e) {
- System.out.println("获取数据库连接失败");
- e.printStackTrace();
- }
- return conn;
- }
- /**
- * 关闭资源
- *
- * @param conn
- * @param stas
- * @param rs
- */
- public void close(Connection conn, Statement stas, ResultSet rs) {
- try {
- if (rs != null)
- rs.close();
- if (stas != null)
- stas.close();
- if (conn != null)
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
来源: http://www.bubuko.com/infodetail-2509931.html