Oracle连接池的实现

该博客展示了使用Java实现Oracle连接池的代码。通过导入相关包,定义连接信息和连接池属性,利用构造函数初始化连接池,实现了获取数据库连接的功能。代码中涉及属性读取、异常处理等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用了Oracle连接池包

import java.util.*;
import java.sql.*;
import java.io.*;
import oracle.jdbc.pool.*;

public class DBPoolConnection {

  private String url = new String();
  private String user = new String();
  private String password = new String();
  private int imin = 0;
  private int imax = 0;
  private OracleConnectionPoolDataSource ocpds;
  private Connection conn = null;
  private OracleConnectionCacheImpl dbpool;
//使用 private static final 属性只产生一个连接池
  private static final DBPoolConnection dbpoolconn = new DBPoolConnection();
//使用private属性的构造函数保证构造函数不被调用
  private DBPoolConnection() {
    if (dbpool == null) {
      getConnectionInfo();
      setOraConnPoolDataSource();
      setOraConnCacheImpl(ocpds);
      setConn(dbpool);
    }
  }

  public static DBPoolConnection getdbpool() {
    return dbpoolconn;
  }

  private boolean getConnectionInfo() {
    Properties prop = new Properties();
    try {
      InputStream is = getClass().getResourceAsStream(
          "/database-conf.properties");
      prop.load(is);
      if (is != null) {
        is.close();
      }

    }
    catch (Exception ex) {
      System.out.println(ex.toString());
    }

    url = prop.getProperty("url");
    user = prop.getProperty("user");
    password = prop.getProperty("password");
    imin = Integer.parseInt(prop.getProperty("min"));
    imax = Integer.parseInt(prop.getProperty("max"));
    return true;
  }

  private OracleConnectionPoolDataSource setOraConnPoolDataSource() {
    Properties prop = new Properties();
    try {
      ocpds = new OracleConnectionPoolDataSource();
      ocpds.setURL(url);
      ocpds.setUser(user);
      ocpds.setPassword(password);
    }
    catch (Exception ex) {
    }
    return ocpds;
  }

  private OracleConnectionCacheImpl setOraConnCacheImpl(
      OracleConnectionPoolDataSource ds) {
    try {
      dbpool = new OracleConnectionCacheImpl(ds);
      dbpool.setCacheScheme(OracleConnectionCacheImpl.FIXED_WAIT_SCHEME);
      dbpool.setMinLimit(imin);
      dbpool.setMaxLimit(imax);
    }
    catch (Exception ex) {

    }
    return dbpool;
  }

  private void setConn(OracleConnectionCacheImpl oraconnImpl) {
    try {
      conn = oraconnImpl.getConnection();
    }
    catch (Exception ex) {
    }
  }

  public Connection getConn() {
    return conn;
  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值