100分!!!主调程序与dll如何共享一个BDE的数据库的连接(TDatabase TQuery...) 100分!!!主调程序与dll如何共享一个BDE的数据库的连接(TDatabase TQuery...) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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接口beginend.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中的类即可。 you are wrongthat is not like you think the "bde" and "ado" is not the same thing!!! Timer里的变量怎么运行的时候自己变成0了。 刚完成的表格控件,请大家帮忙测试下.... 如何写控件编辑器(应该叫这个名字吧) 一个数据插入的问题,急! 怎么获得网上邻居的磁盘空间大小? Image画图的菜鸟级问题! wm_gettext的問題?? 保持文件 如何取treeview 父结点 ID C++ Builder 与 Delphi 的比较 请wenxj、realist、chutian进来领分吧!PCHAR的问题! 如何实现Try...Except...里面的重试功能???
不过我想两着应该相似的吧。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中的类即可。
that is not like you think
the "bde" and "ado" is not the same thing!!!