100分!!!主调程序与dll如何共享一个BDE的数据库的连接(TDatabase TQuery...)

解决方案 »

  1.   

    BDE方式我不是很清楚,我作过ADO方式的,
    不过我想两着应该相似的吧。1、在dll中提供接口一个数据库连接接口(建议只提供ADOConnection接口,
    不要公开ADODataset等接口)。举例如下(我用的是面向对象方式):library Employee; //Employee.dlluses
      ShareMem,
      SysUtils,
      Classes,
      Entity in '..\common\Entity.pas',
      IEntityDM in '..\common\IEntityDM.pas',
      EmployeeDM in 'EmployeeDM.pas';{$R *.res}function Employee_DM:TEmployee_DMClass;
    begin
     result:=TEmployee_DM;
    end;exports
     Employee_DM;//只向用户提供访问类的接口,通过类访问ADOConnection接口begin
    end.unit IEntityDM;interfaceuses DB,ADODB,Entity;type
       IDBConn=class//定义虚的数据库连接类
       protected
        function GetConn:TADOConnection;virtual;abstract;
        procedure SetConn(Value:TADOConnection);virtual;abstract;
       public
        property Conn:TADOConnection read GetConn write SetConn;
      //通过此接口即可共享数据库连接
       end;  IEmployee_DM=class;
       TEmployee_DMClass=class of IEmployee_DM;
       IEmployee_DM=class(IDBConn)//继承了数据连接接口
       protected
        function GetGroup:TGroup;virtual;abstract;
        procedure SetGroup(value:TGroup);virtual;abstract;
       public
        constructor Create;virtual;
        destructor Destroy;override;
        property Group:TGroup read GetGroup write SetGroup;    
        function FetchGroup:TDataset;virtual;abstract;
        function FetchGroupId:TDataset;virtual;abstract;
        procedure AddGroup;virtual;abstract;
        procedure DeleteGroup;virtual;abstract;
        procedure ModifyGroup;virtual;abstract;
        procedure CancelModifyGroup;virtual;abstract;
       end;2、在调用程序中放置一个TADOConnection控件,将此控件赋值给
    dll中的类即可。
      

  2.   

    you are wrong
    that is not like you think 
    the "bde" and "ado" is not the same thing!!!