********************************************************************************************
数据库连接池
测试: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 #日志文件
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);
}
}
* 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)...{}
}
}
* 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类,自己可以到
或向我索取,发信息到ceunlove@163.com即可!(注明要com.javaexchange.dbConnectionBroker类)