我想请问一下:程序运行前,ado连接sql server正常,可是,数据库服务器突然停止服务或断电,出现连接失败,程序就退不出来了,这个问题,该怎么解决、判断,请指教?

解决方案 »

  1.   

    你可以发布一个属性,然后通过这个属性去控制ADO连接数据库,这个你就可以在这个属性中做容错控制了.
      

  2.   

    不是不能退,而是要等相当长的时间才能退,楼主可能没有耐心.具体解决方法:
       加个TRY EXCEPT END 吧,如果连接失败,则显示一下,网络硬件方面问题应该与软件设计无关.
      

  3.   

    TRY 
    .....
    ....
    //数据库操作EXCEPT                
      AdoConnection.close;//抓住异常一定要断开连接对象.END
      

  4.   

    楼上的:楼主说的是连接上以后断开!try
    Except
    end;
    估计捕捉不到吧! adoconnecton.conneted := true; 时系统开了一个线程来监视数据库连接?
    我不是很清楚!如果是ado连上后开一线程,那还差不多!学习
      

  5.   

    如果是断开网线,因为底层网络因素,如果连接不设超时,约半分钟后可以抓住异常.
    反正都是可以抓到的..不要另开线程监视连接,这样往往造成CPU占用过多,
    另外,底层网络断开,而ADOCONNECTION连接对象状态并不会马上为断开状态,因此,
    这时候检查ADOCONNECTION的状态根本无意义!!相反的,应该在抓住异常后,马上
    CLOSE ADOCONNECTION对象,使对象状态与底层状态一致,释放相应资源.
    当底层恢复的时候,上层才能相应恢复.