请通过以下链接查看以下代码:
Connection connMain = DriverManager.getConnection("jdbc:mysql://XX.XX.X.XXX:3306/test","myusername","mypassword");
Connection connRemote = DriverManager.getConnection("jdbc:mysql://" + CurrRemoteIPAddress + ":3306/test","myusername1","mypassword1");
现在,如代码所示,我从一个数据库中提取一些信息 (位于IP地址XX.XX.X.XXX)并将其插入另一个数据库(位于IP地址 由CurrRemoteIPAddress定义,当前在我的代码中第30行设置为AA.YY.Z.PPP
以上的东西工作得非常好。
现在,除了位于AA.YY.Z.PPP的数据库之外,我还有6个数据库(我们称之为 db1用于讨论目的,db2,db3,...,db6)我想要的地方 从XX.XX.X.XXX插入相同的提取信息。
我这样做时必须记住以下几点: a)如果与一个数据库的连接丢失,我应该转到下一个。在理想中 我应该能够将信息插入所有六个数据库(db1到db6)。
我想知道,我应该为六个数据库中的每个数据库定义新的连接字符串吗?
我可以在同一个try catch中定义它吗?
请告知
答案 0 :(得分:0)
我会创建一个连接集合(对于db1到db6)然后迭代它,调用相同的插入逻辑。
您可以捕获任何因未能连接到数据库而导致的异常,记录并简单地转移到下一个数据库。
// step 1 create connection to database db1
// step 2 if successful, add to collection
// step 3 repeat steps 1 and 2 for databases db2 to db6
// step 4 retrieve data from source database
// step 5 for each connection in collection, insert into database
// step 6 close each connection in collection
答案 1 :(得分:0)
虽然可能有更好的解决方案,但我会使用一组Connection
个对象。这样你就可以迭代它们直到得到你需要的东西:
Connection connMain = DriverManager.getConnection(
"jdbc:mysql://XX.XX.X.XXX:3306/test","myusername","mypassword");
Connection[] connections = new Connection[10]; // Assuming you need ten connections
connections[0] = DriverManager.getConnection(
"jdbc:mysql://" + CurrRemoteIPAddress + ":3306/db1","myusername1","mypassword1");
connections[1] = DriverManager.getConnection(
"jdbc:mysql://" + CurrRemoteIPAddress + ":3306/db2","myusername1","mypassword1");
// Add as many as you need
关于您的评论:如何在连接中捕获异常?
在某些时候,您必须从数据库中检索数据。这就是你捕获异常的地方。一个虚拟的例子:
Statement stmt;
ResultSet rs;
boolean done = false;
int i = 0;
while(!done) {
try {
stmt = connections[i].createStatement();
rs = stmt.executeQuery("select * from aTable");
rs.beforeFirst();
while(rs.next()) {
// Do whatever you need with the result set
}
done = true;
} catch(SQLException e) {
// Catch the exception and try with the next connection
i++;
}
}
这是一个大致的想法。您需要编写自己的解决方案,但这是一种可能的方法。
答案 2 :(得分:0)
我想知道,我应该为每个新的连接字符串定义新的连接字符串 六个数据库?
是的 - 您希望同时打开所有连接。
我可以在同一个try catch中定义它吗?
没有。每个连接应该在它自己的try / catch中创建,所以如果一个连接失败,另一个仍然可以工作。
请告知
好的,假设你希望它运行得有点快......