连接池本质上是一组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.空闲关闭
package com.tao.DBCP.test; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.apache.commons.dbcp.BasicDataSource; public class DBCPtest { 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 static BasicDataSource ds; public static void dbpoolInit(){ ds=new BasicDataSource(); ds.setUrl(DB_URL); ds.setDriverClassName(DRIVE_NAME); ds.setPassword(PASSWORD); } public void dbPollTest() { 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 void main(String[] args){ dbpoolInit(); new DBCPtest().dbPollTest(); } }