首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从java应用程序创建到2个数据库的连接

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

Stack Overflow用户
提问于 2013-10-02 03:37:53
回答 2查看 6.2K关注 0票数 3

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

代码语言:javascript
运行
复制
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;
    }
}

现在,我想要创建另一个连接到不同的数据库。有人能建议我修改这段代码以获得连接到2数据库的结果吗?谢谢您的回复

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-02 03:41:40

代码语言:javascript
运行
复制
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 Connection secCon=null;
static final String DB_URL_SECOND= // URL

static final String DB_USER_SECOND=""; // user name
static final String DB_PASS_SECOND="123";




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

Stack Overflow用户

发布于 2013-10-02 04:02:22

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

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

然后,当您想获得对连接的引用时,只需使用getInstance(name)

代码语言:javascript
运行
复制
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;
    }

}

例如..。

代码语言:javascript
运行
复制
DBConnection db1 = DBConnection.newInstance("db1", ....);
DBConnection db2 = DBConnection.newInstance("db2", ....);

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

代码语言:javascript
运行
复制
DBConnection db1 = DBConnection.getInstance("db1");
DBConnection db2 = DBConnection.getInstance("db2");
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19129595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档