由于之前的servlet操作数据库的时候造成了数据库连接的等待问题,所以考虑使用使用数据库连接池的使用,因为项目中涉及mysql和oracle的数据同步问题,所以也将oracle的连接次配置给出:
1、数据库连接配置:
public static final String DBDRIVER = "com.mysql.jdbc.Driver";
public static final String DBURL_A = "jdbc:mysql://Mysql地址一:3306/数据库";
public static final String DBUSER_A = "用户名";
public static final String DBPASSWORLD_A = "密码";
public static final String DBURL_B = "jdbc:mysql://Mysql地址二:3306/数据库";
public static final String DBUSER_B = "用户名";
public static final String DBPASSWORLD_B = "密码";
public static final String ODBDRIVER = "oracle.jdbc.driver.OracleDriver";
public static final String DBURL_C = "jdbc:oracle:thin:@Oracle地址:3306:数据库";
public static final String DBUSER_C = "用户名";
public static final String DBPASSWORLD_C = "密码";
2、多个Mysql数据库连接池:
package mysql;
import java.sql.Connection;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
//引入站点的配置信息
import config.Config;
/**
* 数据库连接生成类,返回一个数据库连接对象
* 构造函数完成c3p0的配置,根据不一样的构造生成不一样的连接池对象
*
* @author yuyu
*
*/
public class DbConnect {
private static ComboPooledDataSource dataSourceJLP=null;
private static ComboPooledDataSource dataSourceMDB=null;
private String db;
/**
* 构造函数完成数据库的连接和连接对象的生成
*/
public DbConnect() {
try{
if(dataSourceJLP==null){
dataSourceJLP=new ComboPooledDataSource();
//设置连接参数
dataSourceJLP.setJdbcUrl(Config.DBURL_A);
dataSourceJLP.setDriverClass(Config.DBDRIVER);
dataSourceJLP.setUser(Config.DBUSER_A);
dataSourceJLP.setPassword(Config.DBPASSWORLD_A);
dataSourceJLP.setInitialPoolSize(3);
dataSourceJLP.setMaxPoolSize(10);
}
this.db="jlp";
}catch(Exception e){
e.printStackTrace();
}
}
public DbConnect(String mdb) {
try{
if(dataSourceMDB==null){
dataSourceMDB=new ComboPooledDataSource();
//设置连接参数
dataSourceMDB.setJdbcUrl(Config.DBURL_B);
dataSourceMDB.setDriverClass(Config.DBDRIVER);
dataSourceMDB.setUser(Config.DBUSER_B);
dataSourceMDB.setPassword(Config.DBPASSWORLD_B);
dataSourceMDB.setInitialPoolSize(3);
dataSourceMDB.setMaxPoolSize(10);
}
this.db="mdb";
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 取得已经构造生成的数据库连接
* @return 返回数据库连接对象
*/
public Connection getConnect(){
try {
if(db.equals("mdb")){
return dataSourceMDB.getConnection();
}else if(db.equals("jlp")){
return dataSourceJLP.getConnection();
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
3、oracle数据库连接池:
package oracle;
import java.sql.Connection;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import config.Config;
/**
* Oracle链接数据库对象
* @author Administrator
*
*/
public class OracleConnect {
private static ComboPooledDataSource dataSourceTest=null;
/**
* 构造函数完成数据库的连接和连接对象的生成
*/
public OracleConnect() {
try{
if(dataSourceTest==null){
dataSourceTest=new ComboPooledDataSource();
//设置连接参数
dataSourceTest.setJdbcUrl(Config.DBURL_C);
dataSourceTest.setDriverClass(Config.ODBDRIVER);
dataSourceTest.setUser(Config.DBUSER_C);
dataSourceTest.setPassword(Config.DBPASSWORLD_C);
dataSourceTest.setInitialPoolSize(3);
dataSourceTest.setMaxPoolSize(10);
}
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 取得已经构造生成的数据库连接
* @return 返回数据库连接对象
*/
public Connection getConnect(){
try {
return dataSourceTest.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
4、对应的调用:
Connection conA=new DbConnect().getConnect();//获取Mysql A数据库连接对象
Connection conB=new DbConnect("mdb").getConnect();//获取Mysql B数据库连接对象
Connection conC=new OracleConnect().getConnect();//获取Oracle C数据库连接对象