原先使用的時候是在單獨的一個mysql上面開發,隨着需求的變化,需要在兩個個或者多個mysql中操作數據,原來確實沒有發現這個問題,但是這個問題的解決也很簡單,那就是創將不同的mysql連接實例對象就可以解決了
1、配置文件中配置你的多個數據庫的配置數據
public static final String DBURL_A = "jdbc:mysql://地址一:3306/數據庫";
public static final String DBUSER_A = "用戶名";
public static final String DBPASSWORLD_A = "密碼";
public static final String DBURL_B = "jdbc:mysql://地址二:3306/數據庫";
public static final String DBUSER_B = "用戶名";
public static final String DBPASSWORLD_B = "密碼";
2.在DAO層的操作前的的構造不同的Connection
public class DbConnect {
private Connection conn=null;
/**
* 構造函數完成數據庫的連接和連接對象的生成
*/
public DbConnect(String db) {
if(db.equals("A")){
try{
Class.forName(Config.DBDRIVER);//加載數據庫驅動程序
this.conn=DriverManager.getConnection(Config.DBURL_A,Config.DBUSER_A,Config.DBPASSWORLD_A);//取得數據庫連接
}catch(Exception e){
e.printStackTrace();
}
}else if(db.equals("B")){
try{
Class.forName(Config.DBDRIVER);//加載數據庫驅動程序
this.conn=DriverManager.getConnection(Config.DBURL_B,Config.DBUSER_B,Config.DBPASSWORLD_B);//取得數據庫連接
}catch(Exception e){
e.printStackTrace();
}
}else{
throw new Exception("無相應數據庫配置");
}
}
/**
* 取得已經構造生成的數據庫連接
* @return 返回數據庫連接對象
*/
public Connection getConnect(){
return this.conn;
}
/**
* 關閉當前構造生成的數據庫連接
*/
public void closeConnect(){
if(this.conn!=null){//存在數據庫連接的時候關閉
try {
this.conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
3、在使用的時候傳入相應的字符來取得相應的數據庫連接
Connection cona=new DbConnect("A").getConnect();//取得數據庫鏈接
Connection conb=new DbConnect("B").getConnect();//取得數據庫鏈接