package eight_Passage.DBCP;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.junit.Test;
/**
* 测试dbcp数据库连接池技术
* @author user
*
*/
public class DbcpTest {
//方式一
@Test
public void dbcpGetConnection() throws SQLException {
//创建了DBCP的数据库连接池
BasicDataSource source=new BasicDataSource();
//设置基本信息
source.setDriverClassName("com.mysql.jdbc.Driver");
source.setUrl("jdbc:mysql:///test");
source.setUsername("root");
source.setPassword("root");
//还可以设置数据库连接池管理的相关属性
source.setInitialSize(10);
source.setMaxActive(10);
//获取链接
Connection conn = source.getConnection();
System.out.println(conn);
}
//方式二:使用配置文件
public Connection getConnection() throws Exception {
//提供一个输入流
//方式一
InputStream is = DbcpTest.class.getClassLoader().getResourceAsStream("dbcp.properties");
//方式二
// FileInputStream is = new FileInputStream("src/dbcp.properties");
Properties prop = new Properties();
prop.load(is);
DataSource source = BasicDataSourceFactory.createDataSource(prop);
Connection connection = source.getConnection();
System.out.println(connection);
}
方式二获取一个数据链接,每调用一次getConnectoin就会创建一个数据库连接池,因此,getConnection方法不完善
完善方法如下
private static DataSource source=null;
static {
//获取一个输入流
//方式一
// FileInputStream is = new FileInputStream(new File("src/dbcp.properties"));
//方式二
InputStream is = DbcpTest.class.getClassLoader().getResourceAsStream("dbcp.properties");
Properties prop = new Properties();
try {
prop.load(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//创建一个数据库连接池
try {
source = BasicDataSourceFactory.createDataSource(prop);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Connection getConnection() throws SQLException{
Connection connection = source.getConnection();
return connection;
}
这样所有的链接公用一个数据库连接池