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

📄 dbconnectionmanager.java

📁 用java实现的一个论坛,可以供大家参考
💻 JAVA
字号:
package liuxiaobo.db;

import java.sql.*;
import java.util.*;

public class DBConnectionManager {
  private static  DBConnectionManager instance;
  private DBConnectionPool pool;


  public static DBConnectionManager getInstance() {
    if (instance == null) {
      instance = new DBConnectionManager();
    }
    return instance;
  }
  public Connection getConnection() throws SQLException{
    return pool.getConnection();
  }
  public void freeConnection(Connection con)  throws SQLException{
    pool.freeConnection(con);

  }
  private DBConnectionManager() {
    init();
  }
  private void init() {
    PropertyResourceBundle prb=(PropertyResourceBundle)PropertyResourceBundle.getBundle("/DB");
    String db_driver=prb.getString("DB.DRIVER");
    String db_url=prb.getString("DB.URL");
    String db_user=prb.getString("DB.USER");
    String db_password=prb.getString("DB.PASSWORD");
    int db_maxConn=Integer.parseInt(prb.getString("DB.MAX_CONNECTIONS"));
    try {
      Class.forName(db_driver);
    }
    catch (ClassNotFoundException ex) {
      System.out.println(ex);
    }
    pool = new DBConnectionPool(db_url,db_user,db_password,db_maxConn);
  }

  // inner class


  class DBConnectionPool {

  private Vector freeConnections = new Vector();
  private int maxConn;
  private int connNumb;

  private String URL;
  private String password;
  private String user;

        public DBConnectionPool(String URL, String user, String password,int maxConn) {
            this.URL = URL;
            this.user = user;
            this.password = password;
            this.maxConn = maxConn;
        }

        public synchronized void freeConnection(Connection con) {
            freeConnections.addElement(con);
            connNumb--;
            notifyAll();
        }

        public synchronized Connection getConnection() throws SQLException{
            Connection con = null;
            if (freeConnections.size() > 0) {
                con = (Connection) freeConnections.firstElement();
                freeConnections.removeElementAt(0);
                try {
                    if (con.isClosed()) {
                        con = getConnection();
                    }
                }
                catch (SQLException e) {
                      con = getConnection();
                }
            }
            else if (maxConn == 0 || connNumb < maxConn) {
                con = newConnection();
            }
            if (con != null) {
                connNumb++;
            }
            return con;
        }

        private Connection newConnection() throws SQLException{
            Connection con =DriverManager.getConnection(URL,user, password);
            return con;
        }
    }


}

⌨️ 快捷键说明

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