📄 jmdboconnectionpool.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 + -