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

📄 dbconnectionany.java

📁 农业银行ATM对帐查询系统后台类包的源代码,实现了FTP,数据库管理等等功能
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package boco.shabank.dbconnection;//数据库连接,利用缓冲池技术实现对不同数据源的连接控制/** * <p>Title: dbmanager</p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: boco</p> * @author xugs * @version 1.0 */import java.io.*;import java.sql.*;import java.util.*;import java.util.Date;import com.sybase.jdbc2.jdbc.SybDriver;/*** 管理类DBConnectionManager支持对一个或多个由属性文件定义的数据库连接* 池的访问.客户程序可以调用getInstance()方法访问本类的唯一实例.*/public class DBConnectionAny {   static private DBConnectionAny instance; // 唯一实例   static private int clients;   static private String dbsource;   public String m_strErrmsg = "No Operation";   private Vector drivers = new Vector();        private PrintWriter log;        private Hashtable pools = new Hashtable();        public String getErrorMsg() {                return m_strErrmsg;        }   /**           * 返回唯一实例.如果是第一次调用此方法,则创建实例                *                * @return DBConnectionManager 唯一实例        */        static synchronized public DBConnectionAny getInstance() {                if (instance == null) {                        instance = new DBConnectionAny();                }                clients++;                return instance;        }        static synchronized public DBConnectionAny getInstance(Vector vSource) {                if(dbsource == null)                    dbsource = vSource.elementAt(1).toString();                if(dbsource != null && !dbsource.equals(vSource.elementAt(1).toString())){                    dbsource = vSource.elementAt(1).toString();                    instance = new DBConnectionAny(vSource);                }                if (instance == null) {                        instance = new DBConnectionAny(vSource);                }                clients++;                return instance;        }        /**                * 建构函数私有以防止其它对象创建本类实例        */        private DBConnectionAny() {                //init();        }        public DBConnectionAny(Vector vDBSource) {                init(vDBSource);        }        /**                * 将连接对象返回给由名字指定的连接池                *                * @param name 在属性文件中定义的连接池名字                * @param con  连接对象        */        public void freeConnection(String name, Connection con) {                DBConnectionPool pool = (DBConnectionPool) pools.get(name);                if (pool != null) {                        pool.freeConnection(con);                }        }        /**                * 获得一个可用的(空闲的)连接.如果没有可用连接,且已有连接数小于最大连接数                * 限制,则创建并返回新连接                *                * @param name  在属性文件中定义的连接池名字                * @return Connection 可用连接或null        */        public Connection getConnection(String name) {                DBConnectionPool pool = (DBConnectionPool) pools.get(name);                if (pool != null) {                        return pool.getConnection(60000);                }                return null;        }        /**                * 获得一个可用连接.若没有可用连接,且已有连接数小于最大连接数限制,                * 则创建并返回新连接.否则,在指定的时间内等待其它线程释放连接.                *                * @param name 连接池名字                * @param time 以毫秒计的等待时间                * @return Connection 可用连接或null        */        public Connection getConnection(String name, long time) {                DBConnectionPool pool = (DBConnectionPool) pools.get(name);                if (pool != null) {                        return pool.getConnection(time);                }                return null;        }        /**                * 关闭所有连接,撤销驱动程序的注册        */        public synchronized void release() {        // 等待直到最后一个客户程序调用                if (--clients != 0) {                        return;                }                Enumeration allPools = pools.elements();                while (allPools.hasMoreElements()) {                        DBConnectionPool pool = (DBConnectionPool) allPools.nextElement();                        pool.release();                }                Enumeration allDrivers = drivers.elements();                while (allDrivers.hasMoreElements()) {                        Driver driver = (Driver) allDrivers.nextElement();                        try {                                DriverManager.deregisterDriver(driver);                                log("撤销JDBC驱动程序 " + driver.getClass().getName()+"的注册");                        } catch (SQLException e) {                                log(e, "无法撤销下列JDBC驱动程序的注册: " + driver.getClass().getName());                        }                }        }        /**                * 根据指定属性创建连接池实例.                *                * @param props 连接池属性        */        private void createPools(Properties props) {                Enumeration propNames = props.propertyNames();                while (propNames.hasMoreElements()) {                        String name = (String) propNames.nextElement();                        //System.out.println("name="+name) ;                        if (name.endsWith(".url")) {                                String poolName = name.substring(0, name.lastIndexOf("."));                                String url = props.getProperty(poolName + ".url");                                //System.out.println("url="+url) ;                                if (url == null) {                                        log("没有为连接池" + poolName + "指定URL");                                        continue;                                }                                String user = props.getProperty(poolName + ".user");                                String password = props.getProperty(poolName + ".password");                                String maxconn = props.getProperty(poolName + ".maxconn", "0");                                int max;                                try {                                        max = Integer.valueOf(maxconn).intValue();                                } catch (NumberFormatException e) {                                        log("错误的最大连接数限制: " + maxconn + " .连接池: " + poolName);                                        max = 0;                                }                                DBConnectionPool pool = new DBConnectionPool(poolName, url, user, password, max);                                pools.put(poolName, pool);                                log("成功创建连接池" + poolName);                        }                }        }        /**                * 读取属性完成初始化        drivers=COM.ibm.db2.jdbc.net.DB2Driver        logfile=e:\\log.txt        access.url=jdbc:db2://196.168.1.132:50007/uaop        access.user=umsp        access.password=boco        access.maxconn=5        */   private void init(Vector vAllDBS) {                Properties dbProps = new Properties();                try {                        Vector vCol=new Vector();                        vCol = vAllDBS;                        dbProps.setProperty(vCol.elementAt(1).toString()+".drivers",vCol.elementAt(2).toString());                        dbProps.setProperty("logfile","e:\\log2.txt") ;                        dbProps.setProperty(vCol.elementAt(1).toString()+".url",vCol.elementAt(3).toString() ) ;                        dbProps.setProperty(vCol.elementAt(1).toString()+".user",vCol.elementAt(4).toString() ) ;                        dbProps.setProperty(vCol.elementAt(1).toString()+".password",vCol.elementAt(5).toString() ) ;                        dbProps.setProperty(vCol.elementAt(1).toString()+".maxconn","5" ) ;                        //System.out.println("vcol="+vCol.elementAt(1)) ;                }                catch (Exception e) {

⌨️ 快捷键说明

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