java Servlet操作多个mysql数据库

时间:2022-09-11 11:36:19

原先使用的时候是在单独的一个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();//取得数据库链接