为什么不使用DataSnap,方便有效。
你这样连接,而不通过ADOCONNECTION连接,不是有效的好方法。放弃了一个有效的手段。这样会造成资源的浪费。

解决方案 »

  1.   

    如果简单,可以试试
    ADOCONNECTION的KeepConnect=false属性
      

  2.   


    你的意思还是在DataModule里创建一个adoconnection,然后所有的组件连到它。
    keepconnect =false 起到什么作用? 
      

  3.   

    我现在改为:在主程序定义一个全局的 adocon ,
    在主窗体的oncreate事件里写:adocon:=TADOConnection.create(NIL);
    adocon.LoginPrompt:=false;
    adocon.KeepConnection:=false;
    adocon.connectionstring:=myconstr;
    adocon.connected:=true;
    中间调用数据库:var
       aqry:TADOQuery;
    begin
      aqry:=TADOQuery.Create(Self);
      aqry.Connection:=adocon;
      aqry.close;
      aqry.sql.text:='select * from aaa';
      try
        aqry.open;
      except
      end;
      ...........
      //使用完后释放
      aqry.close;
      aqry.destory;
    end;
    最后,在程序退出时,在主窗体的 onclose里写:adocon.close;
    adocon.destory;你们看看这样子写的效率会不会好一些呢?
      

  4.   

    使用 adocon.KeepConnection:=false; 后确实不会导致程序死掉了,只是数据库断开时会卡一下,等到数据库连接成功时,程序又可以正常操作了,这个方法不错,适合简单的程序方案。
      

  5.   


    我的系统也只限于在局域网内使用的,你说的1分钟内连接断开200次这是使用哪一种方法的?
    不用连接池,就一个连接。connetion提前创建,ADO动态创建释放。