数据库出故障停止后,重新启动数据库,delphi开发的程序提示“连接错误”,不能继续运行。如何在程序里写代码,让ADOconnection在数据库停止服务又重启时,自动重新连接?

解决方案 »

  1.   

    做一个timer进行巡察连接,不停的连阿连阿。或者自己写一个程序调用sqlservr 应用程序可以从命令提示符下启动、停止、暂停和继续 Microsoft® SQL Server™ 2000 的实例。然后在sleep等待一段时间以后重新尝试连接。
      

  2.   

    程序功用一个
    ConnectData() 函数;
    在ConnectData里判断是否断线了。使用的地方:
    if ConnectData() then begin
      try
        AQ.Open;
      except
        ConnectData(True);
        AQ.Open;
      end;
    end;
      

  3.   

    你每间隔一段时间检测一次服务器连接就可以了~timer控件~
      

  4.   

    在ADOConnection1的AfterDisconnect事件里设置!!!!!
      

  5.   

    在ADOConnection1的AfterDisconnect事件里设置!!!!!
    在ADOConnection1的AfterDisconnect事件里设置!!!!!
    在ADOConnection1的AfterDisconnect事件里设置!!!!!
    在ADOConnection1的AfterDisconnect事件里设置!!!!!
    在ADOConnection1的AfterDisconnect事件里设置!!!!!
    在ADOConnection1的AfterDisconnect事件里设置!!!!!
    在ADOConnection1的AfterDisconnect事件里设置!!!!!
    在ADOConnection1的AfterDisconnect事件里设置!!!!!
    在ADOConnection1的AfterDisconnect事件里设置!!!!!
      

  6.   

    to tpmao(想飞的猫):
    在ADOConnection1的AfterDisconnect事件里设置什么?又不是属性嘛。是不是写try...except...?
      

  7.   

    to kiboisme(还是铁棒.....针) :
    没有ConnectData()这个函数呀
      

  8.   

    在ADOConnection1的AfterDisconnect,当然是写连接数据库的代码了,再挂上它呀
      

  9.   

    在ADOConnection1的AfterDisconnect,是否不用写连接数据库的代码,因为原来在ADOConnection1属性里已经设好了,直接来个connected:=true就行了?
      

  10.   

    数据库操作处理的时候,抓异常,异常处理的时候,AdoConnection CLOSE一下.
    做什么数据库程序都可以这样.
    不需要定时检查什么的.
      

  11.   

    to halfdream(哈欠):
    我的程序需要长时间无人值守地运行,要求数据库意外停止再自动重启后(这在服务器上已经设好),能自己重新连上数据库,如果不定时检查能行吗?在AfterDisconnect事件里尝试open?
      

  12.   

    To:andyG(旁人皆睡我独醒) 
    事实上,我也是写长时间运行程序时候才注意这问题的,曾想过很多办法,
    但最后还是发现答案如此单纯。
    仅仅是
    一,每个数据库处理抓住异常。
    二,每个数据库异常处理时候将ado连接CLOSE掉。不必再打开它。
    因为下次任何一个数据库操作会自动把它打开。
      

  13.   

    数据库死掉,或者网络链路断掉,是影响程序维持数据库连接的主要问题,
    当出现这些情况后,马上重连多半是不成功。
    在经常的轮循数据库的程序里面。。
    为了避免空耗CPU或网络资源,
    我多半在处理异常里面,
    将AdoConnection   Disconnect后,再加上一句Sleep