datasourcejdbc.java~16~
来自「一个自己做的公司网站和办公职员管理系统。」· JAVA~16~ 代码 · 共 118 行
JAVA~16~
118 行
package ws.woa.core;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.*;
import java.lang.Exception;
/**
* JDBC僨乕僞僜乕僗忣曬傪奿擺偡傞僋儔僗偱偡丅
* 曐帩偡傞忣曬偐傜偺Connection僆僽僕僃僋僩惗惉儊僜僢僪傪帩偪傑偡丅
*
* @author Wang
*/
public class DataSourceJDBC {
private ArrayList alDBs;
private String user;
private String password;
private String url;
private String driver;
private boolean autoCommit;
private int connNum; // Added by Wang for JDBC Pool.
/**
* 僐儞僗僩儔僋僞
* @param user
* @param password
* @param url
* @param driver
*/
public DataSourceJDBC(String user,String password,String url,String driver,
boolean autoCommit,String connNum) {
this.user = user;
this.password = password;
this.url = url;
this.driver = driver;
this.autoCommit = autoCommit;
this.connNum = Integer.parseInt(connNum); // Added by Wang for JDBC Pool.
init(); // Added by Wang for JDBC Pool.
}
/**
* 僐僱僋僔儑儞傪庢摼偟傑偡丅
*/
/*
public Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName(this.driver);
Connection conn = DriverManager.getConnection(this.url,this.user,this.password);
conn.setAutoCommit(this.autoCommit);
return conn;
}
*/
// Begin - Added by Wang for JDBC Pool.
public void init() {
alDBs = new ArrayList();
try {
Class.forName(driver).newInstance();
for (int i = 0; i < this.connNum; i++) {
Connection conn = DriverManager.getConnection(this.url, this.user,
this.password);
conn.setAutoCommit(this.autoCommit);
alDBs.add(conn);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void destroy() {
try {
synchronized (alDBs) {
while(this.connNum > 0) {
Connection conn = (Connection) alDBs.get(0);
conn.close();
alDBs.remove(0);
this.connNum--;
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public Connection getConnection() throws SQLException {
Thread curThread = Thread.currentThread();
int timeout = 5;
while(timeout-- > 0) {
synchronized (alDBs) {
if (this.connNum > 0) {
Connection conn = (Connection) alDBs.get(0);
alDBs.remove(0);
this.connNum--;
return conn;
}
}
try {
curThread.sleep(50+Math.round(Math.random()*51));
} catch (Exception ex) {
ex.printStackTrace();
}
}
throw new SQLException("No more DB connection.");
}
public void releaseConnection(Connection conn) {
synchronized (alDBs) {
alDBs.add(conn);
this.connNum++;
}
}
// End - Added by Wang for JDBC Pool.
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?