大家知道,对于一个定位于server的程序,稳定性是很重要的,因为用户不太会操作他。
可是,如果server和数据库密切相关,而数据库是最容易发生问题的地方,如何保证server不会受到数据库的影响而依然潇洒自如呢?比如数据库暂时的中断,重启。server能否设计成自动智能处理。数据库断了就不工作,但一直尝试重连,一旦连好了在继续工作。在设计过程中我想问一个问题,就是数据库断了,AdoConnection如何知道?
在try except中如果捕获到对数据库的操作失败,并不能断定是数据库断了阿?
我的问题:
1.数据库比如oracle8重启,或者有故障,他会告诉前台一个正在和他保持连接的Adoconnection嘛?
2.前台捕获的各种数据库错误,如何归类,如何区分,adoconnection有没有提供错误码?
3.这个问题大家如何设计的?
谢谢。

解决方案 »

  1.   

    AdoConnection 有一个状态属性,可以检测连接当前的状态。
    例如:
      if stOpen in MyADOConnection.State then
        MyADOConnection.Close();
      

  2.   

    如果后台数据库断了,后台不会通知前台的adoconnection.
    前台此时如果不在对数据库操作,state还是open状态,如果操作了,那末必定出错,
    但错误原因前台如何知道呢,不可能对于任何错误,前台都去重新连接,只有捕获到后台服务断了,网断了等错误时,再去连接。希望高明志士给出答案。
      

  3.   

    如果是因为后台某个对象被别人改动,比如表加了一个字段,程序出错,也去重连吗?
    不能因为这一个地方影像其它的访问啊。
    应该是网络断开,或数据库server连接不通情况下,再重连啊。
    期待高明啊。!!!