⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbconnectionmanager.java

📁 主要对各种数据库性能进行测试
💻 JAVA
字号:
//////////////////////////////////////////////////
//		公司名:VCOM
//		Project:计费接口
//		By:XQG
//		Discription:类调配中心,监听一个端口,根据接收到的
//					 数据调用不同的类处理事务			
//		Version:v1.0
//		Modify:null
//////////////////////////////////////////////////
package db;

/**
 * 2005-12-15 13:28修改为使用oracle连接池
 */
 
import java.sql.*;
import java.util.*; 

import sqlite.Configure;

/**
 * 管理类DBConnectionManager支持对一个或多个由属性文件定义的数据库连接
 * 池的访问.客户程序可以调用getInstance()方法访问本类的唯一实例.
 */
public class DBConnectionManager {
	static private DBConnectionManager instance; // 唯一实例
	private String dsname = ""; //缺省的连接池
	private String prefix = "proxool.";

	/**
	 * 返回唯一实例.如果是第一次调用此方法,则创建实例
	 *
	 * @return DBConnectionManager 唯一实例
	 */
	static synchronized public DBConnectionManager getInstance() {
		if (instance == null) {
			instance = new DBConnectionManager();
		}
		return instance;
	}

	/**
	 * 建构函数私有以防止其它对象创建本类实例
	 */
	public DBConnectionManager() {
		init();
	}

	/**
	 * 将连接对象返回给由名字指定的连接池
	 *
	 * @param name 在属性文件中定义的连接池名字
	 * @param con 连接对象
	 */
	public void freeConnection(String name, Connection con) {
		try {
			if (con != null && !con.isClosed()) {
				con.close();
				//System.out.println("数据库连接" + con + "已释放!");
			}
			con = null;
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}

	}

	public void freeConnection(Connection con) {
		try {
			if (con != null && !con.isClosed()) {
				con.close();
				//System.out.println("数据库连接" + con + "已释放!");
			}
			con = null;
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}

	}

	/**
	 * 获得一个可用的(空闲的)连接.如果没有可用连接,且已有连接数小于最大连接数
	 * 限制,则创建并返回新连接
	 *
	 * @param name 在属性文件中定义的连接池名字
	 * @return Connection 可用连接或null
	 */
	public Connection getConnection(String name) throws SQLException {

		//System.out.println(name);
		return DriverManager.getConnection(prefix + name);

	}

	/**
	 * 从默认数据源获得连接
	 * @return Connection
	 * @throws SQLException
	 */
	public Connection getConnection() throws SQLException {

		return this.getConnection(dsname);

	}

	/**
	 * 读取属性完成初始化
	 */
	private void init() {
		// org.logicalcobwebs.proxool.configuration.JAXPConfigurator.configure("WEB-INF/classes/proxool.xml", false);
		try {
			Configure config = new Configure();
			String dbtype=config.getProperty("dbtype");
			this.dsname = dbtype;
			String url ="";
			if(dbtype.equalsIgnoreCase("sqlite")){
				url = getClass().getClassLoader().getResource("sqlite.xml")
				.getPath();
			}else if(dbtype.equalsIgnoreCase("hsql")){
				url = getClass().getClassLoader().getResource("hsql.xml")
				.getPath();
			}else if(dbtype.equalsIgnoreCase("mysql")){
				url = getClass().getClassLoader().getResource("mysql.xml")
				.getPath();
			}else if(dbtype.equalsIgnoreCase("oracle")){
				url = getClass().getClassLoader().getResource("oracle.xml")
				.getPath();
			}else if(dbtype.equalsIgnoreCase("enterprisedb")){
				url = getClass().getClassLoader().getResource("enterprisedb.xml")
				.getPath();
			}else if(dbtype.equalsIgnoreCase("kingbase")){ 
				url = getClass().getClassLoader().getResource("kingbase.xml")
				.getPath();
			}
			
			System.out.println("========="+url);
			String pf = java.net.URLDecoder.decode(url, "UTF-8");
			// Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
			org.logicalcobwebs.proxool.configuration.JAXPConfigurator
					.configure(pf, false);
			System.out.println("=======111=====");
		} catch (Exception e) { 
			e.printStackTrace();
		}
	}

	/**
	 * 设定数据源名称,默认为pool
	 * @param ds String 数据库源名称
	 */
	public void setDsname(String ds) {
		this.dsname = ds;
	}

	/**
	 * 获得当前数据源名称
	 * @return String
	 */
	public String getDsname() {
		return this.dsname;
	}

	/**
	 * 缓冲的动态连接,静态连接通过连接池的配置文件解决,需要动态的连接到另外的数据库
	 * 上时使用此方法。
	 * @param driverClass String 数据库驱动
	 * @param dburl String 数据库连接URL
	 * @param dbUser String 数据库用户名
	 * @param dbPass String 数据库密码
	 * @param alias String 数据库别名,用来缓冲连接,下次用此连接时要用同样的名字哦
	 * @return Connection 返回一个连接
	 * @throws Exception
	 */
	public Connection getDynamicCon(String driverClass, String driverUrl,
			String dbUser, String dbPass, String alias) throws Exception {
		Connection connection;
		Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
		Properties info = new Properties();
		 
		String url = "proxool." + alias + ":" + driverClass + ":" + driverUrl;
		System.out.println("url=="+url);
		try {
			org.logicalcobwebs.proxool.ProxoolFacade.registerConnectionPool(
					url, info);
		} catch (Exception e) {

		}
		alias = info.getProperty("alias");
		connection = DriverManager.getConnection("proxool." + alias);
		System.out.println(connection);
		return connection;
	}

	public static void main(String[] args) {
		//DBConnectionManager db = new DBConnectionManager();
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -