日期:2014-05-16 浏览次数:20529 次
首先写一个读取本地数据库驱动,数据库用户名、数据库密码、连接数的类。
?
?
package cn.cate.utils;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
public class PoolProperties {
private Properties properties;
private String driver;
private String url;
private String user;
private String password;
private int maxConn;
private int minConn;
public PoolProperties(){
properties = new Properties();
String path = getClass().getProtectionDomain().getCodeSource().getLocation().toString();
path = path.substring(6, path.length());
if (path.indexOf("WEB-INF") > 0) {
path = path.substring(0, path.indexOf("/WEB-INF") + 9) + "lib/";
}else{
path = "d:";
}
try {
this.properties.load(new FileReader(path + "db.pro"));
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
this.setDriver(properties.getProperty("driver"));
this.setUrl(properties.getProperty("url"));
this.setUser(properties.getProperty("user"));
this.setPassword(properties.getProperty("password"));
this.setMaxConn(Integer.parseInt(properties.getProperty("maxConn")));
this.setMinConn(Integer.parseInt(properties.getProperty("minConn")));
}
public Properties getProperties() {
return properties;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getMaxConn() {
return maxConn;
}
public void setMaxConn(int maxConn) {
this.maxConn = maxConn;
}
public int getMinConn() {
return minConn;
}
public void setMinConn(int minConn) {
this.minConn = minConn;
}
}
?
?
db.pro的内容如下:
?
driver=com.mysql.jdbc.Driver ?? ? ? ?maxConn=10??? ?? ? ? ?minConn=1?? ?? ? ? ?url=jdbc:mysql://127.0.0.1:3306/cate?? ?? ? ? ?user=root?? ?? ? ? ?password=11111??
?
然后定义一个数据库连接池:DBConnectionPool
?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*
* 此内部类定义了一个连接池,它能够根据要求创建连接,直到预定的最大连接数为止。
* 在返回连接给客户程序之前,它能够验证连接的有效性。
*/
public class DBConnectionPool {
/*
* 连接池
*/
private List<Connection> freeConnections = new ArrayList<Connection>();
private Connection conn = null;
private int connect = 0; //使用的连接数
private int maxConn; //最大连接数
private String driver; //数据库驱动
private String url; //数据库连接地址
private String user; //用户名
private String password; //用户名
public DBConnectionPool(String driver,String URL,String user,String password,int maxConn){
this.driver = driver;
this.url = URL;
this.user = user;
this.password = password;
this.maxConn = maxConn;
poolInfo();
}
/*
* 显示准备创建连接池的信息
*/
private void poolInfo(){
Connection conn = this.newConnection();
freeConnections.add(conn);
for(int i = 0;i < this.maxConn - 1;i++){
Connection freeConn = conn;
freeConnections.add(freeConn);
}
}
/*
* 用完,释放