你可以在线程里动态生成TQuery,线程结束时再释放掉嘛:)

解决方案 »

  1.   

    因为你用的是BDE,多线程除TQuery外还要TSession元件,
    所以,最好静态建一个DataModule1,放上Database1,Session1,Query1,
    每一个线程TDataModule1.Create就可以了
      

  2.   

    Session和Query都可以动态创建和释放。Session做成全局,Query作成局部,需要的时候建立,不需要的时候释放。如当有连接的时候动态创建Session当需要查询或多个查询时候,动态建立一个或多个Query把Query.session指向这个连接的Session Query执行完释放Query 当客户连接释放,把这Session释放.
      

  3.   

    对:BCB(:))和powerlee(老李飞刀) 
    本人很菜,请问能否给个具体的例子,谢谢,如果多的话发到
      

  4.   

    假设你有以下几个事件
    //用户连接
    OnClientConnect(UID:TClientID):
    var
     M_Session:TSession;
    begin
     M_Session := TSession.Create(Application); 
     M_Session.OpenDatabase(M_Database.DatabaseName);
     //保存UID与M_Session;
     SaveSessionToArray(uid,M_Session);
    end;
    //用户数据请求
    OnClientReqData(UID);
    var
     qryCount:TQuery;
    begin
     //通过UID找到保存的Tsession;假设是以下函数
     qryCount:=TQuery.Create(Application);
     qryCount.session:= GetSession(Uid);
     
    //执行
     with QryCount do begin
     {do some thing}
     ...
     end;
     qrySession.free;
    end;
    //释放连接
     OnDisconnect(UID)
     var
     session:TSession;
    begin
     session:=GetSession(uid);
    end;
      

  5.   

    对:powerlee(老李飞刀) 
    不好意思本来给50分的但好象我给的最高分只能是20,不好意思,谢谢你!!!