连接池本质上是一组java架包,介于java应用程序与JDBC数据库物理链接之间,帮助应用程序管理链接。
通过连接池预先同数据库建立一些连接放在内存中(即连接池中),应用程序需要建立数据库连接时直接到从接池中申请一个连接使用,用完后由连接池回收该连接,从而达到连接复用,减少资源消耗的目的。
DBCP连接池:DBCP(DataBase connection pool)数据库连接池是 apache 上的一个Java连接池项目。
需要的jar包:commons-dbcp.jar,commons-pool.jar,commons-logging.jar
1.创建连接池对象
2.获取数据连接
3.释放数据连接(将连接归还连接池)
高级配置:
1.setInitialSize() :预置一定数量连接,保证第一次连接速度
2.setMaxTotall() :连接最大值
3.setsetMaxWaitMillis() :设置最长等待时间
4.setMaxIdle() :最多空闲连接数
5.setMinIdle() :最少空闲连接数
6.空闲关闭
packagecom.tao.DBCP.test; importjava.sql.Connection; importjava.sql.ResultSet; importjava.sql.SQLException; importjava.sql.Statement; importorg.apache.commons.dbcp.BasicDataSource; public classDBCPtest { public final static String DRIVE_NAME="com.mysql.jdbc.Driver"; public final static String USER_NAME="root"; public final static String PASSWORD="admin"; public final static String DB_URL="jdbc:mysql://localhost:3306/schoolweb?useUnicode=true&characterEncoding=utf8"; public staticBasicDataSource ds; public static voiddbpoolInit(){ ds=newBasicDataSource(); ds.setUrl(DB_URL); ds.setDriverClassName(DRIVE_NAME); ds.setPassword(PASSWORD); } public voiddbPollTest() { Connection conn = null; Statement stmt = null; ResultSet rs = null; try{ conn =ds.getConnection(); stmt =conn.createStatement(); rs = stmt.executeQuery("select * from schoolweb"); while(rs.next()) { System.out.println(rs.getString("name")); } } catch(SQLException e) { e.printStackTrace(); } finally{ try{ if (conn != null) conn.close(); if (stmt != null) stmt.close(); if (rs != null) rs.close(); } catch(SQLException e) { e.printStackTrace(); } } } public static voidmain(String[] args){ dbpoolInit(); newDBCPtest().dbPollTest(); } }