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

📄 jmdboconnectionpool.java

📁 梦界家园程序开发基底框架
💻 JAVA
字号:
package jm.dbo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.LinkedList;

/**
 * DBConnectionPool
 * @author fu_changyong(1shome)
 * @see jdk1.5.2
 * @version 1.5.2.2
 *
 */
public class JMDBOConnectionPool {
    public static final String CLASS_NAME = "DBConnectionPool";

    private int checkedOut_;

    private LinkedList<Connection> freeConnections_ = new LinkedList<Connection>();

    private int iMaxConn_;

//    private String name_;

    private String password_;

    private String URL_;

    private String user_;

     /**
     * creat db con pool
     *
     * @param name
     *            pool name
     * @param URL
     *            db URL
     * @param user
     *            db user or null
     * @param password
     *            pass or null
     * @param maxConn
     *            pool max con
     */
    public JMDBOConnectionPool(JMDBOConntionInfoKeyValue _set) {
        if(_set==null){
            _set = new JMDBOConntionInfoKeyValue();
        }
//        this.name_ = _set.getDatabase();
        this.URL_ = _set.getUrl();
        this.user_ = _set.getUser();
        this.password_ = _set.getPassword();
        this.iMaxConn_ = Integer.parseInt(_set.getMaxcon());
    }

    /**
     * close not use con
     *
     * @param con
     *            free con
     */
    public synchronized void freeConnection(Connection con) {
        freeConnections_.add(con);
        checkedOut_--;
        notifyAll();
    }

    /**
     * get a con from conpool
     *
     * @return Connection
     */
    public synchronized Connection getConnection() {
//        final String sMethod = "getConnection";
        Connection con = null;
        if (freeConnections_.size() > 0) {
            con = freeConnections_.getFirst();
            freeConnections_.remove(0);
            try {
                if (con.isClosed()) {
                    con = getConnection();
                }
            } catch (SQLException e) {
                con = getConnection();
            }
        } else if (iMaxConn_ == 0 || checkedOut_ < iMaxConn_) {
            con = newConnection();
        }
        if (con != null) {
            checkedOut_++;
        }
        return con;
    }

    /**
     * get a con in time
     *
     * @param timeout
     *            long
     * @return Connection
     */
    public synchronized Connection getConnection(long timeout) {
        long startTime = new java.util.Date().getTime();
        Connection con;
        while ((con = getConnection()) == null) {
            try {
                wait(timeout);
            } catch (InterruptedException e) {
            }
            if ((new java.util.Date().getTime() - startTime) >= timeout) {
                return null;
            }
        }
        return con;
    }

    /**
     * close all con
     */
    public synchronized void release() {
//        final String sMethod = "release";
        for (Iterator iter = freeConnections_.iterator(); iter.hasNext();) {
            Connection con = (Connection) iter.next();
            try {
                con.close();
            } catch (SQLException e) {
            }
        }
        freeConnections_.clear();
        freeConnections_ = new LinkedList<Connection>();
    }

    /**
     * creat ne con
     *
     * @return Connection
     */
    private Connection newConnection() {
 //       final String sMethod = "newConnection";
        Connection con = null;
        try {
            if (user_ == null) {
                con = DriverManager.getConnection(URL_);
            } else {
                con = DriverManager.getConnection(URL_, user_, password_);
            }
        } catch (SQLException e) {
        }
        return con;
    }

    // 1丄Oracle8/8i/9i悢悩?乮thin柾幃乯
    //
    // Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    // String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl?悢悩?揑SID
    // String user="test";
    // String password="test";
    // Connection conn= DriverManager.getConnection(url,user,password);
    //
    // 2丄DB2悢悩?
    //
    // Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
    // String url="jdbc:db2://localhost:5000/sample"; //sample??揑悢悩?柤
    // String user="admin";
    // String password="";
    // Connection conn= DriverManager.getConnection(url,user,password);
    //
    // 3丄Sql Server7.0/2000悢悩?
    //
    // Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
    // String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
    // // mydb?悢悩?
    // String user="sa";
    // String password="";
    // Connection conn= DriverManager.getConnection(url,user,password);
    //
    // 4丄Sybase悢悩?
    //
    // Class.forName("com.sybase.jdbc.SybDriver").newInstance();
    // String url =" jdbc:sybase:Tds:localhost:5007/myDB";//myDB??揑悢悩?柤
    // Properties sysProps = System.getProperties();
    // SysProps.put("user","userid");
    // SysProps.put("password","user_password");
    // Connection conn= DriverManager.getConnection(url, SysProps);
    //
    // 5丄Informix悢悩?
    //
    // Class.forName("com.informix.jdbc.IfxDriver").newInstance();
    // String url =
    // "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;
    // user=testuser;password=testpassword"; //myDB?悢悩?柤
    // Connection conn= DriverManager.getConnection(url);
    //
    // 6丄MySQL悢悩?
    //
    // Class.forName("org.gjt.mm.mysql.Driver").newInstance();
    // String url
    // ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
    // // myDB?悢悩?柤
    // Connection conn= DriverManager.getConnection(url);
    //
    // 7丄PostgreSQL悢悩?
    //
    // Class.forName("org.postgresql.Driver").newInstance();
    // String url ="jdbc:postgresql://localhost/myDB" //myDB?悢悩?柤
    // String user="myuser";
    // String password="mypassword";
    // Connection conn= DriverManager.getConnection(url,user,password);
    //
    // 8丄access悢悩?捈?梡ODBC揑
    //
    // Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
    // String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");
    // Connection conn = DriverManager.getConnection(url,"","");
    // Statement stmtNew=conn.createStatement() ;

}

⌨️ 快捷键说明

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