我有连接类的代码,它只从一个数据库获得一个连接。请看下面的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;
}
}
现在,我想要创建另一个连接到不同的数据库。有人能建议我修改这段代码以获得连接到2数据库的结果吗?谢谢您的回复
发布于 2013-10-02 03:41:40
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();
}
}
}
发布于 2013-10-02 04:02:22
您需要提供一些方法来标识不同的连接,但也需要配置这些连接。
您可以提供一个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");
https://stackoverflow.com/questions/19129595
复制相似问题