借助DBCP连接池访问dept表

JDBC2.0 规范引入了数据库连接池技术。JDBC的数据库连接池使用 javax.sql.DataSource接口来表示,该接口通常由商用服务器(如WebLogic、WebSphere)等提供实现,也有一些开源组织提供实现(如DBCP、C3P0)。

DataSource 通常被称为数据源,它包含连接池和连接池管理两个部分,但习惯上我们也经常把DataSource称为连接池。

DBCP 连接池依赖另一个开源系统:commons-pool.jar。


import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.commons.dbcp.BasicDataSource;

public class DBCP_JDBC {

	public static void main(String[] args) {
		
		BasicDataSource ds=new BasicDataSource();
		Connection conn=null;
		
		ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
		ds.setUrl("jdbc:oracle:thin:@localhost:1521:orcl");
		ds.setUsername("scott");
		ds.setPassword("tiger");
		ds.setInitialSize(5);//设置连接池的初始连接数
		ds.setMaxActive(20);//设置连接池最多可有多少个活动连接数
		ds.setMinIdle(2);//设置连接池中最少有多少个空闲的连接
		
		try {
			conn=ds.getConnection();//通过数据源获取数据库连接
			Statement stmt=conn.createStatement();
			ResultSet rs=stmt.executeQuery("select * from dept");
			while(rs.next()){
				int deptno=rs.getInt("deptno");
				String dname=rs.getString("dname");
				String loc=rs.getString("loc");
				System.out.println(deptno+"\t"+dname+"\t"+loc);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				conn.close();//释放数据库连接
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
	}

}
运行程序,控制台输出:

程序中conn.close( );并没有关闭数据库的物理连接,它仅仅把数据库连接释放,归还给连接池,让其他客户端可以使用该连接。

查看 BasicDataSource 的源代码可以知道:

public class BasicDataSource implements DataSource {...}


你可能感兴趣的:(jdbc,DBCP)