如题:程序访问数据库(SQL 2000),网线拔掉后连接就失败了!如下图:然后就需要退出程序重新启动程序才能连接数据库。请问下怎么才能自动重新连接数据库,不用重启程序?

解决方案 »

  1.   

    procedure TForm1.ADOConnection1Disconnect(Connection: TADOConnection;
      var EventStatus: TEventStatus);
    begin
        try
           ConnectionString :='路径';
           ADOConnection1.Connected := true ;
        Except
        End;
    end;这样做不行吗?
      

  2.   

    通常关闭ADOConnection1;
    在使用ADOConnection1的时候在打开!
      

  3.   

    在Timer里写下下面的代码就可以解决了
    try
          while dm.ADOConn.Connected=true do
          begin
            dm.ADOConn.Connected := false;
            application.ProcessMessages;
          end;
          while dm.ADOConn.Connected=false do
          begin
            dm.ADOConn.Connected := true;
            application.ProcessMessages;
          end;
        except
        end;
      

  4.   

    建議調用使用ping方法,掉線後標識檢查網絡,用Timer再上時間,(如2分鍾與server ping一次),再進行相應的程序操作
      

  5.   

    写一个线程监控ADOConnection的状态,一旦发现断开就重新连接。
    如果是连接的就不用管它。
    检测ADOConn.Connected是没用的,你需要检测ADOConn.Errors.Item[0].SQLState来判断是否断开。
    如果是以下几个值之一,肯定被断开了。
      CONNECTABORT_SQLSERVER1 = '08S0'; //连接失败的错误号(SQLSERVER) 在简体版本下,显示不出最后一位
      CONNECTABORT_SQLSERVER2 = '08S01'; //连接失败的错误号(SQLSERVER)
      CONNECTFAULT_SQLSERVER = '08001'; //连接不上服务器的的错误号(SQLSERVER)