最代码广告位
chenjiepengc的gravatar头像
chenjiepengc2013-01-05 13:14:44

java jdbc连接工具类DBConnectionManager

/**
 * 管理类DBConnectionManager支持对一个或多个由属性文件定义的数据库连接
 * 池的访问.客户程序可以调用getInstance()方法访问本类的唯一实例.
 */
public class DBConnectionManager {
	
	static private DBConnectionManager instance;
	static private int clients;
	private Vector drivers = new Vector();
	private PrintWriter log;
	private Hashtable pools = new Hashtable();

	/**
	 * 返回唯一实例.如果是第一次调用此方法,则创建实例
	 * @return DBConnectionManager 唯一实例
	 */
	static synchronized public DBConnectionManager getInstance() {
		if (instance == null) {
			instance = new DBConnectionManager();
		}
		clients++;
		return instance;
	}
	/**
	 * 建构函数私有以防止其它对象创建本类实例
	 */
	private DBConnectionManager() {
		init();
	}
	/**
	 * 读取属性完成初始化
	 */
	private void init() {
		InputStream is = getClass().getResourceAsStream("/db.properties");
		Properties dbProps = new Properties();
		try {
			dbProps.load(is);
		} catch (Exception e) {
			System.err.println("不能读取属性文件. 请确保db.properties在CLASSPATH指定的路径中");
			return;
		}
		String logFile = dbProps.getProperty("logfile", "dbconMgr.log");
		try {
			log = new PrintWriter(new FileWriter(logFile, true), true);
		} catch (IOException e) {
			System.err.println("无法打开日志文件: " + logFile);
			log = new PrintWriter(System.err);
		}
		loadDrivers(dbProps);
		createPools(dbProps);
	}
	/**
	 * 装载和注册所有JDBC驱动程序
	 * @param 参数  :  db.properties
	 */
	private void loadDrivers(Properties props) {
		String driverClasses = props.getProperty("drivers");
		StringTokenizer st = new StringTokenizer(driverClasses);
		while (st.hasMoreElements()) {
			String driverClassName = st.nextToken().trim();
			try {
				Driver driver = (Driver)Class.forName(driverClassName).newInstance();
				DriverManager.registerDriver(driver);
				drivers.addElement(driver);
				log("成功注册JDBC驱动程序" + driverClassName);
			} catch (Exception e) {
				e.printStackTrace();
				log("无法注册JDBC驱动程序: " + driverClassName + ", 错误: " + e);
			}
		}
	}


AXIN编辑于2014-2-12 16:36:05


打赏

文件名:DBConnectionManager.java,文件大小:10K下载
最代码最近下载分享源代码列表最近下载
s569891514 LV22018年1月10日
星星星星
AXIN LV362014年2月12日
太阳太阳月亮
最代码最近浏览分享源代码列表最近浏览
滴滴嗒嗒 LV123月31日
月亮月亮月亮
五折也挺好的 LV23月28日
星星星星
rainbow706263月13日
暂无贡献等级
123123231 LV12019年12月12日
星星
jaonsang LV232019年10月27日
太阳月亮星星星星星星
liangliang2049 LV22019年10月13日
星星星星
fanxiaolin84 LV92019年8月15日
月亮月亮星星
13734993 LV72019年8月6日
月亮星星星星星星
wwb127 LV22019年6月11日
星星星星
13271027026 LV22019年5月12日
星星星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友