gpt4 book ai didi

java - 从 Java 应用程序创建到 2 个数据库的连接

转载 作者:搜寻专家 更新时间:2023-10-30 19:41:33 26 4
gpt4 key购买 nike

我有 Connection 类的代码,它只从一个数据库获取连接。看下面的DBConnection.java

package eksim.db.sql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class DBConnection {

public Connection conn=null;
private static DBConnection dbConn=null;
static final String DB_URL=
"jdbc:sqlserver://10.0.0.47\\test;databaseName=a;";
static final String DB_USER="sa";
static final String DB_PASS="123";




public DBConnection(){
if(conn==null){
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
conn=DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
}
catch(Exception ex){
ex.printStackTrace();
}
}
}





public static DBConnection getInstance(){
DBConnection conn=null;
if(dbConn==null){
System.out.println("New");
dbConn=new DBConnection();
conn=dbConn;
} else{
conn=dbConn;
}
return conn;
}
public Connection getCon() throws SQLException{
return this.conn;
}
}

现在,我想创建另一个到不同数据库的连接。谁能给我建议修改这段代码,以便将 Connection 的结果放入 2 个数据库中?感谢您的回复

最佳答案

您需要提供一些方法来识别不同的连接,还需要配置这些连接。

您可以提供一个 newInstance 方法,并向其传递一个名称,该名称用于标识连接和创建该连接所需的连接属性。

然后,当您想获得对连接的引用时,您可以简单地使用 getInstance(name)

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

public class DBConnection {

public Connection conn = null;

private static Map<String, DBConnection> mapInstances = new HashMap<String, DBConnection>(25);

private String dbURL;
private String dbUser;
private String dbPassword;

private DBConnection(String dbURL, String dbUser, String dbPassword) {
this.dbPassword = dbPassword;
this.dbURL = dbURL;
this.dbUser = dbUser;
}

public synchronized static DBConnection newInstance(String name, String dbURL, String dbUser, String dbPassword) {
DBConnection con = new DBConnection(dbURL, dbUser, dbPassword);
mapInstances.put(name, con);
return con;
}

public synchronized static DBConnection getInstance(String name) {
return mapInstances.get(name);
}

public synchronized Connection getCon() throws SQLException {
if (conn == null) {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
conn = DriverManager.getConnection(dbURL, dbUser, dbPassword);
} catch (Exception ex) {
ex.printStackTrace();
}
}
return this.conn;
}

}

例如……

DBConnection db1 = DBConnection.newInstance("db1", ....);
DBConnection db2 = DBConnection.newInstance("db2", ....);

当你想再次访问连接时......

DBConnection db1 = DBConnection.getInstance("db1");
DBConnection db2 = DBConnection.getInstance("db2");

关于java - 从 Java 应用程序创建到 2 个数据库的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19129595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com