?? dbconnectionmanager.java
字號(hào):
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;
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -