数据库连接池几种实现方法(DBCP/C3P0)

数据库连接池每次运行时,只初始化一次。Connection 对象进行 close 时并不是真的关闭,而是将连接归还给数据库连接池。

一、DBCP方式(使用jar包:classes12.jar   commons-dbcp-1.2.2.jar   commons-pool.jar)

1、正常调用参数方式:

@Test
	public void dbcpTest(){
		try {	
			BasicDataSource dataSource=new BasicDataSource();
			dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
			dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:orcl");
			dataSource.setUsername("scott");
			dataSource.setPassword("tiger");
			
			Connection conn = dataSource.getConnection();
			System.out.println(conn.getClass());
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
	}

2、调用配置文件方式:(两种方式)

①BasicDataSource 对象建立连接:(该方法中配置文件里的参数名可随意定义)


PS:代码中的流方法仅用于 jdbc.properties 文件在 src 外部


//BasicDataSource 对象建立连接,调用配置文件方式
	@Test
	public void dbcpTest(){
		String driver="";
		String url="";
		String user="";
		String psw="";
		//此种流的方式请注意 jdbc.properties 的放置位置
		File file=new File("jdbc.properties");
		try {
			InputStream in=new FileInputStream(file);
			Properties ppt=new Properties();
			ppt.load(in);
			
			driver=ppt.getProperty("driver");
			url=ppt.getProperty("url");
			user=ppt.getProperty("user");
			psw=ppt.getProperty("psw");
			
			BasicDataSource dataSource=new BasicDataSource();
			dataSource.setDriverClassName(driver);
			dataSource.setUrl(url);
			dataSource.setUsername(user);
			dataSource.setPassword(psw);
			
			Connection conn=dataSource.getConnection();
			System.out.println(conn.getClass());
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

②BasicDataSourceFactory 对象建立连接:

(此方法中配置文件里的参数名,为BasicDataSource对象的setXXX()方法里的方法名)


对应下图中的各个setXXX()方法


PS:代码中的流方法仅用于 dbcp.properties 文件在 src 内部(与上面在src外部的根据文本位置不同可混合使用)


//BasicDataSourceFactory对象建立连接,调用配置文件方式
	@Test
	public void dbcpFactoryTest(){
			try {
				//此种流的方式,请注意 dbcp.properties 的位置
				InputStream in=this.getClass().getResourceAsStream("/dbcp.properties");
				Properties ppt=new Properties();
				ppt.load(in);
				DataSource dataSource=BasicDataSourceFactory.createDataSource(ppt);
				System.out.println(dataSource);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}

二、C3P0方式(使用jar包:c3p0-0.9.1.2.jar   classes12.jar)

1、调用参数方法

//C3P0建立连接池,调用ComboPooledDatatSource类中的参数方法时
	@Test
	public void c3p0Test(){
		ComboPooledDataSource comData=new ComboPooledDataSource();
		try {
		  	comData.setDriverClass("oracle.jdbc.driver.OracleDriver");
			comData.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:orcl");
			comData.setUser("scott");
			comData.setPassword("tiger");
		
			Connection conn=comData.getConnection();
			System.out.println(conn);
		} catch (PropertyVetoException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

2、调用配置文件(此方法中的配置文件必须放在src下,调用的是xml里面配置的 标签 name值。其中对应规则同上。)



//C3P0建立连接池,调用配置文件时
	@Test
	public void c3p0FileTest(){
		try {
			DataSource dataSource=new ComboPooledDataSource("C3P0");
			Connection conn=dataSource.getConnection();
			System.out.println(conn);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值