delphi编制的erp程序,如何在客户端与服务器的数据库在5分钟内没有数据交互时,自动断开连接,数据交互包括查询、更改、删除。

解决方案 »

  1.   

    每一个 数据库操作的地方 都作一个异常处理,这是原则
    try
      
    exceptend
      

  2.   

    1.继承 TADOConnection, TADOQuery 等控件,写自己的 TConnection 和 TQuery;
    2.改写Exec, Open, Post 一切与数据库有交互的等方法,一但有交互事件,调用自订的TConnection的OnExchange事件;
    3.TConnection.OnExchange事件处理器中纪录最后交互时间;
    4.系统下有一Timer,1秒钟一次查询TConnection最后交互时间,若超过5分钟,则:
    4.1用个画面阻止用户使用,除非输入用户名,密码;
    4.2断掉TConnection;
    5.用户输入用户名密码后:
    5.1隐藏阻止画面;
    5.2设置最后交互时间,重连TConnection,ok, 这样就行了。
      

  3.   

    3层直接在服务端判断时间超时,直接清除session;
    2层只能在客户端判断.
      

  4.   

    > 你连接数据库保持5分钟之久?不论如何,没事就别连接,连接了就马上干完要干得时然后立即关闭连接。是这样吗?
    连接需要额外的时间,
    所以,我通常连上去,基本上C/S框架上,直到关闭Client为止,都不会关闭连接。
    现在B/S也一样,通常连上去,就一直用,
    Session结束了,只是把connection保留起来,不关闭连接,
    直到下次有其他的Session再用。你真的每次用几秒钟,不用就断开连接?