现在的情况是
有个服务器 是装在  192.168.1.10 但有时这台电脑会关掉或者其他原因不能连接到
还有一个服务器是本机 127.0.0.1 
现在打算如果 192.168.1.10 不能用的话 就存在本机的话,这程序 应该怎么写?
还有就是默认的连接超时 要等半天才算连接超时, 怎么样设置成 1秒 没反应 就算超时?

解决方案 »

  1.   

    private function MakeConnect as adodb.connection
    on error goto errhandler
    dim bRetry as boolean
    dim cnn as new adodb,connection
    bretry=true
    cnn.connectionstring=constCnt1 'constCnt1 连接到第一个连接的连接串常数
    cnn.open
    set MakeConnect =cnn
    exit function
    if bretry then
      if err.number=超时错误的数值 then
      cnn.connectionstring=constCnt2'constCnt2 连接到另一个连接的连接串常数
      bretry=false
      resume 
      end if
    end if
    end sub
      

  2.   

    谢谢掉供算法哈
    现在程序是能用了.问题是有点儿慢.服务器没开的话,大概是要几十秒才有反应.这不能接受啊
    设置了
    cn.CommandTimeout = 1
    cmd.CommandTimeout = 1
    都不行,还是慢要等半天不知道怎么回事
    所以我找了点PING的代码.先看能不能PING通服务器.可以的话就再试连SQL服务器.这样快多了
      

  3.   


    等待几十秒正常,因为此时服务器1已经处于异常状态,必须等待超时ConnectionTimeout 属性 (ADO)
             指示在终止尝试和产生错误前建立连接期间所等待的时间。设置和返回值设置或返回指示等待连接打开的时间的长整型值(单位为秒)。默认值为 15。说明如果由于网络拥塞或服务器负载过重导致的延迟使得必须放弃连接尝试时,请使用 Connection 对象的 ConnectionTimeout 属性。如果打开连接前所经过的时间超过 ConnectionTimeout 属性上设置的时间,将产生错误,并且 ADO 将取消该尝试。如果将该属性设置为零,ADO 将无限等待直到连接打开。请确认正在对其编写代码的提供者会支持 ConnectionTimeout 功能。连接关闭时 ConnectionTimeout 属性为读/写,而打开时其属性为只读。
      

  4.   

    先ping服务器的ip地址,而且ping的时候可以设置超时时间,ping不同的话再存入本地数据库。
    另外我觉得,你把数据都存在本地一份,然后上传到服务器一份,加个是否已上传的字段,如果保存数据时服务器不通,就把字段设为false,等保存下个数据时,如果服务器通了,就检查没有上传过的数据,然后上传上去
      

  5.   

    版主的意思是这个代码是在这个贴子里面手工输入的,不简单,这样就能够实现功能了,而不是从VBIDE工程中复制过来的。你看,就没有几个大写字母,从VBIDE中复制过来,开头第一个字母必定大写,这是VBIDE的风格。
      

  6.   

    在代码里面加入   
    conn.ConnectionTimeout = 1000
    conn.CommandTimeout = 10001秒=1000毫秒在个就是像2楼的抓取一个异常错误 判断超时然后再重新连接本地的服务器。