现在的情况是任何一台网络不通或超时
就报错,程序终止了
我想程序自动连接下一台
依次类推

解决方案 »

  1.   

    try{
    第一个数据库连接;抛出异常;
    }catch(Exception e)
    {
    现在的情况是任何一台网络不通或超时 
    就报错,程序终止了 ;
     连接第二个数据库;
    }catch(Exception e)
    {
    现在的情况是任何一台网络不通或超时 
    就报错,程序终止了 ;
     连接第三个个数据库;}
    .....
    finally{
    关闭数据库连接;
    }不知道此方法是否行的通。 o(∩_∩)o...
      

  2.   

    我猜想你需要获取到任何一个服务器上的数据库连接吧,如果各台服务器的数据库连接代码都是一样的(除了HOST)那维护一个HOST数组  String[] HOSTS =....
    java.sql.Connection con = null;
    Class.forName(.....);
    for(int i=0;i<HOSTS.length;i++)
    {
       //获取到HOSTS[i]的连接,如果成功break;
       try{
        con=.....
        break;
       }catch(。。)
       {
         
       }
       
    }
      

  3.   

    把数据库连接相关的信息封装成一个类(DBInfo),然后,200多个数据库,就会对应200多个DBInfo的对象,将这些对象保存在一个LinkedList里面.
    编写一个接口public interface Proccessor{
         public abstract void proccess(Connection con)throws SQLException;
    }假设你处理这些数据的类是Controller,通过调用Controller.doProccess(Object args)方法来实现的.那么,可以做如下修改:
    public class Controller{
         List dbiList = new LinkedList();//这是那200多个DBInfo对象的链表.自己想办法添进去.初始化的时候添一次就可以了.
         //原来的doProccess方法
          public void doProcess(final Object args){
              Proccessor p = new Processor({
                   public void proccess(Connection con)throws SQLException{
                        //在这里面添加你要对数据库操作的内容.注意,这里最好是要封装成一个事务进行提交.
                        //如果不想使用匿名内部类,可以自己编写一个有名称的实现类.
                   }
              });
              doDBProccess(p);
         }
         private void doDBProccess(Proccessor p){
              for(Iterator itr = dbiList.iterator();itr.hasNext();){
                   DBInfo info = (DBInfo)itr.next();
                   Connection conn = getDBConnection(info);
                   try{
                        p.proccess(conn);
                        return;
                   }catch(SQLException e){
                        continue;
                   }
              }
                noDBCanDO(p);
         }
         private void noDBCanDO(Proccessor p){
         //所有DB的连接都无法完成时,代码添这里就可以了.
         }
         private Connection getDBConnection(DBInfo info){
         //通过DBInfo对象的内容,创建一个数据库的连接.代码添这里就可以.
         }
    }以上,只是实现楼主要求的一种方式之一.方法太多,主要还是得根据具体情况来设计代码.我写得可能有些复杂了.
      

  4.   

    noDBCanDO(Proccessor p)方法应该改名叫做noDBCanFinish(Proccessor p)