DBCP(DataBase connection pool)
,数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar,配置文件 db.properties 如下:
1 2 3 4 5 6 7 8
| driverClassName=oracle.jdbc.OracleDriver url=jdbc:oracle:thin:@localhost:1521:xe username=system password=254615 initialSize=10 maxActive=50 minIdle=5 maxWait=60000
|
Properties文件 是以键值对形式存放数据,一个键对应且只对应一个值,键与值都不能有空格
DBCP连接池如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| mport java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
public class DBCPUtil {
private static DataSource dataSource; static { //在类加载时, 读取配置文件, 配置连接池 //1. 创建Properites对象 Properties ppt = new Properties(); //2. 读取配置文件, InputStream is = DBCPUtil.class.getClassLoader().getResourceAsStream("dbcp.properties"); //3. 将配置文件 加载到Properties对象中 try { ppt.load(is); //4. 通过连接池工厂类, 创建连接池 dataSource = BasicDataSourceFactory.createDataSource(ppt); } catch (Exception e) { e.printStackTrace(); } } /** * 用于从连接池中 获取一个连接对象 * @return 连接对象 , 如果获取失败返回null */ public static Connection getConnection() { try { return dataSource.getConnection(); } catch (Exception e) { e.printStackTrace(); return null; } } /** * 用于释放资源 * @param conn 连接对象 * @param state 执行环境 * @param result 结果集 */ public static void close(Connection conn , Statement state ,ResultSet result) { if(result!=null) { try { result.close(); } catch (SQLException e) { e.printStackTrace(); } } if(state!=null) { try { state.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn!=null) { try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
|
Druid连接池如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties;
public class DruidUtil {
private static DataSource dataSource; static { InputStream is = DruidUtil.class.getClassLoader().getResourceAsStream("db.properties"); Properties pro = new Properties(); try { pro.load(is); dataSource = DruidDataSourceFactory.createDataSource(pro); } catch (Exception e) { e.printStackTrace(); } }
public static Connection getConnection(){
try { return dataSource.getConnection(); } catch (SQLException e) { e.printStackTrace(); return null; } }
public static void sourceCloes(Connection conn, Statement st, ResultSet rs){
try { if (conn!=null) { conn.close(); } if (st!=null) { st.close(); } if (rs!=null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); } } }
|
建议使用Druid连接池,因为Druid是最大最好的连接池 而且它是阿里出品哦 - ( ゜- ゜)つロ