分享

各位能通过动态链接库共用一个数据库连接吗?

 老魏的书架 2012-08-28
这个问题我来帮你吧
一个exe文件,一个dll文件

在dll   的窗体里不要放database,而是在public里声明一个database;
在exe文件里放好database,设置好

以下是源代码

dll文件

导出函数为showform;

unit   Unit1;

interface

uses
    Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,
    Dialogs,   Grids,   DBGrids,   DB,   DBTables;

type
    TForm1   =   class(TForm)
        Table1:   TTable;
        DataSource1:   TDataSource;
        DBGrid1:   TDBGrid;
    private
        {   Private   declarations   }
    public
        database1:tdatabase;
        {   Public   declarations   }
    end;
    procedure   showform(applicationname:tapplication;databasename:tdatabase);stdcall;
var
    Form1:   TForm1;
    dllapplication:tapplication;
implementation

{$R   *.dfm}
    procedure   showform(applicationname:tapplication;databasename:tdatabase);stdcall;
    begin
        application:=applicationname;
        application.CreateForm(tform1,form1);
        form1.Database1:=databasename;
        form1.Table1.DatabaseName:=form1.database1.DatabaseName;
        form1.table1.Open;
        form1.ShowModal;
        form1.Free;

    end;
initialization
    dllapplication:=application;
finalization
    dllapplication:=application;
end.


exe文件
unit   Unit2;

interface

uses
    Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,
    Dialogs,   StdCtrls,   DB,   DBTables;

type
    TForm2   =   class(TForm)
        Database1:   TDatabase;
        Button1:   TButton;
        procedure   Button1Click(Sender:   TObject);
    private
        {   Private   declarations   }
    public
        {   Public   declarations   }
    end;
    procedure   showform(applicationname:tapplication;database:tdatabase);stdcall;external   'dllfile.dll '   name   'showform ';
var
    Form2:   TForm2;
    dllapplication:tapplication;
implementation

{$R   *.dfm}

procedure   TForm2.Button1Click(Sender:   TObject);
begin
    showform(application,database1);
end;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多