dbcp数据库连接池
就性能而言,1.4版本的连接池性能比1.2版本高,跟c3p0差不多
使用此数据库连接池必须导入commons-dbcp,commons-pool包,以下是其实现方法:
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.commons.dbcp.BasicDataSource;
//dbcp数据库连接池连接方法
public class BasicDbcp {
public static void main(String[] args) throws SQLException {
String url="jdbc:mysql://localhost:3306/test";
String dr="com.mysql.jdbc.Driver";
//实例化数据源对象
BasicDataSource ds=new BasicDataSource();
//设置属性
ds.setDriverClassName(dr);
ds.setUrl(url);
ds.setUsername("root");
ds.setPassword("123");
System.err.println("被包裹的数据连接(内部私有类):"+ds.getConnection().getClass());
Statement sta= ds.getConnection().createStatement();
ResultSet rs= sta.executeQuery("select * from user");
while(rs.next()){
System.out.println(rs.getString("name"));
}
rs.close();
sta.close();
ds.close();
}
}
同时也可以在属性文件(properties)中存放基本属性,然后再在其中获取:
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
//根据配置文件来连接数据库
public class BasicDbcpProperties {
private static DataSource ds=null;
public BasicDbcpProperties(){
//声明资源文件对象
Properties pro=new Properties();
try {
//load方法来获取此文件
//以流的方式将此文件传送过来
pro.load(this.getClass().getResourceAsStream("jdbc.properties"));
//以 工厂类来创建这个DataSource资源
ds=BasicDataSourceFactory.createDataSource(pro);
Connection con=ds.getConnection();
System.out.println(con);
con.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws SQLException {
//初始化10个连接之后,不会再自动增加连接,因此此处没有设计好
Connection con=null;
long start=System.currentTimeMillis();
new BasicDbcpProperties();
for(int i=0;i<17;i++){
con=ds.getConnection();
System.out.println(con);
}
long end=System.currentTimeMillis();
System.out.println(end-start);
}
}
2.C3P0数据库连接池
只需要导入C3P0-0.9.jar包即可
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mchange.v2.c3p0.DataSources;
public class C3PODemo {
public static void main(String[] args) throws PropertyVetoException, SQLException {
//获取DataSource
ComboPooledDataSource ds=new ComboPooledDataSource();
ds.setDriverClass("com.mysql.jdbc.Driver");
ds.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/wj");
ds.setUser("root");
ds.setPassword("root");
ds.setInitialPoolSize(3);
ds.setMinPoolSize(10);
ds.setMinPoolSize(5);
Connection con=ds.getConnection();
System.out.println(con);
System.err.print(con);
DataSources.destroy(ds);
}
}