📄 dbconnectionmanager.java
字号:
package test.db;
import java.util.Vector;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import test.Configuration;
public class DBConnectionManager {
private final static DBConnectionManager instance = new DBConnectionManager(); //单子模型
private DBConnectionPool pool;
public static DBConnectionManager getInstance() {
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() {
Configuration cfg = Configuration.getInstance();
String db_driver = cfg.getValue("DB.DRIVER");
String db_url = cfg.getValue("DB.URL");
String db_user = cfg.getValue("DB.USER");
String db_password = cfg.getValue("DB.PASSWORD");
int db_maxConn = Integer.parseInt(cfg.getValue("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);
}
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 + -