********************************************************************************************
数据库连接池
测试:ceun.test.Test
配置文件:mydb.properties
create time:2005-04-20
author:Java619
用到的第三包:com.javaexchange.dbConnectionBroker.DbConnectionBroker
********************************************************************************************/
连接数据库是我们经常要用到的,而利用数据库连接池则可以更有效地使用数据库连接,提高程序性能。下面我提供一个数据库连接池实例,以供大家参考。
1.首先新建一个properties文件:mydb.properties
db.driver
=
org.gjt.mm.mysql.Driver #使用mmmysql JDBC Driver
db.url
=
jdbc:mysql://localhost/jspdev #jspdev为你的数据库名
db.user
=
root #用户名
user.password
=
#密码
minimun.pool.size
=
2
#最小连接数
maximum.pool.size
=
10
#最大连接数
maxConnTime
=
1.0
#最长连接时间
db.logfile
=
D:/works/DCB_Example.log #日志文件
2.连接池管理Bean:DbManager.java
/**/
/*
* DBManager.java
*@author Java619
* Created on 2005年4月20日
*/

package
ceun.util.db;

import
java.sql.
*
;
import
java.io.
*
;
import
java.util.
*
;
import
com.javaexchange.dbConnectionBroker.
*
;
import
ceun.util.
*
;

public
class
DBManager

...
{
private int minConns,maxConns;
private double maxConnTime;
private String driver;
private String url;
private String user;
private String password;
private String db_logfile;
private DbConnectionBroker myBroker=null;
private static DBManager instance=null;


private DBManager()...{
init();
config();
}
//???

public static synchronized DBManager getInstance()...{
if(instance==null)
instance=new DBManager();
return instance;
}


private void init()...{

try...{
Properties p=new Properties();//读取mydb.properties属性文件
InputStream fin=getClass().getResourceAsStream("/mydb.properties");
p.load(fin);

driver=p.getProperty("db.driver");
url=p.getProperty("db.url");
user=p.getProperty("db.user");
password=p.getProperty("user.password");
db_logfile=p.getProperty("db.logfile");
minConns=Integer.parseInt(p.getProperty("minimun.pool.size"));
maxConns=Integer.parseInt(p.getProperty("maximum.pool.size"));
maxConnTime=Double.parseDouble(p.getProperty("maxConnTime"));
fin.close();

}catch(Exception e)...{System.out.println("can't not load properties file!");}
}


private void config()...{

try ...{
myBroker = new DbConnectionBroker(driver,url,user
,password,minConns,maxConns,
db_logfile,maxConnTime);

} catch (IOException e5) ...{
System.out.println("can't not set confog");
}
}


public Connection getCon()...{
Connection con=null;
con = myBroker.getConnection();
return con;
}


public void freeCon(Connection con)...{
myBroker.freeConnection(con);
}
}
测试用例
/**/
/*
* TestPool.java
*@author Java619
* Created on 2005年4月20日
*/
package
ceun.test;

import
java.sql.
*
;
import
java.io.
*
;
import
java.util.
*
;
import
ceun.util.db.
*
;

public
class
TestPool

...
{
public void search()

...{
Connection conn = null;
Statement stmt = null;
DBManager man =DBManager.getInstance();

try...{
conn = man.getCon();
stmt = conn.createStatement();
//假设数据库jspdev(对应你自己的数据库名)有一包含name字段的user表,
ResultSet rst = stmt.executeQuery("select * from user;");

while(rst.next())...{
System.out.println(rst.getString("name")+" okok");
}
//if(rst!=null)
//rst.close();
if(stmt!=null) stmt.close();
man.freeCon(conn);

}catch(Exception e)...{}
}
}
上面用到的com.javaexchange.dbConnectionBroker类,自己可以到
www.javaexchange.com下载
或向我索取,发信息到ceunlove@163.com即可!(注明要com.javaexchange.dbConnectionBroker类)