在实际开发中 不会自己实现连接池,因为自己写的连接池会有很多bug,而且现在有很多开源的数据库连接池供我们使用,因此我们可以使用开源的数据库连接池,
有两种常见的数据库连接池
1.Apache commons-dbcp连接池
2.c3p0连接池
一、当使用Apache DBCP需要下载commons-dbcp.jar commons-pool.jar
apache commons子目录下zip包没有快速入门文档,只有API
需要手动设置四个参数
编写properties文件———properties加载文件
Properties properties=new Properties(); properties.load(new
FileInputStream(this.getClass().getResource(“/pro.properties”).getFile()));
DataSource datasource=(DataSource)
BasicDataSourceFactory.createDataSource(properties);
下边是利用dpcp不使用properties文件进行设置的代码
//使用BasicDataSource创建连接池
BasicDataSource basicDataSource=new BasicDataSource();
//创建连接池一次性创建多个连接池
//连接池需要四个参数
basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
basicDataSource.setUrl("jdbc:mysql://localhost:3306/day14");
basicDataSource.setUsername("root");
basicDataSource.setPassword("");
//从连接池中获取连接
Connection con=basicDataSource.getConnection();
二、使用c3p0连接池
首先下载c3p0解压后有doc等几个目录文件
其中doc目录下有使用入们index.html文件
主要类是ComboPooledDataSource
可以进行手动设置参数
public void test() throws PropertyVetoException, SQLException{
//创建一个连接池
ComboPooledDataSource datasource=new ComboPooledDataSource();
//设置四个参数
datasource.setDriverClass(“com.mysql.jdbc.Driver”);
datasource.setJdbcUrl(“jdbc:mysql://localhost:3306/day14”);
datasource.setUser(“root”);
datasource.setPassword(“wdl03707552882”);
//创建连接
Connection con=datasource.getConnection();
String sql="select * from account";
PreparedStatement s=(PreparedStatement) con.prepareStatement(sql);
ResultSet r=s.executeQuery();
也可以采用自动加载xml文件的方式
public void demo2() throws SQLException{
//使用配置文件xml加载驱动等四项文件内容
ComboPooledDataSource data=new ComboPooledDataSource();
//程序会自动加载src目录下的’c3p9-config.xml’文件无需引入xml文件自动加载
Connection con=data.getConnection();
String sql=”select * from account”;
PreparedStatement s=(PreparedStatement) con.prepareStatement(sql);
ResultSet r=s.executeQuery();
while(r.next()){
System.out.println(“—–姓名==为”+r.getDouble(“money”));
}