dbcp连接池技术

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;
	}
	

这样所有的链接公用一个数据库连接池

上一篇:用JavaScript判断是不是质数


下一篇:DBCP-C3P0连接池-1(利用封装更加快捷的处理问题)