由於之前的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數據庫連接對象