下面是计算机报CCID上的文章,我不知哪部分有错,在我的机器上他所谓的服务器端
没问题,客户端不通.我认为"创建客户应用程序"的:第2点没有讲清楚,我不太懂?
好象新建Data Module(数据模块)细节比他讲的要更多.
第4点"设置相应的通信协议ConnectType及有关项",能详细给我解释一下吗?
------------------------------
声明:以下文章转自2000.4.13 CCID
------------------------------
当前页面位置: 主页: 技术天地: 编程指南: 技术文章
创建多层Client/Server应用
(作者:邵立嵩、冯伟 2000年04月13日 15:14)
Borland Delphi 4.0 客户/服务器版为用户提供了开发多层Client/Server数据库应用程序的工具。多层Client/Server数据库应用程序在逻辑上可划分为:客户机应用程序、应用服务器和远程数据库服务器。它们可以分布在网络中不同的计算机中,也可以配置在同一台计算机中。下面介绍开发一个简单的多层Client/Server数据库应用程序。
配置数据库
Microsoft的ODBC 和Borland的数据库引擎BDE(Borland Database Engineering)使用户能够方便地连接多种类型的数据库。我们可以在应用服务器程序所在的计算机中通过对ODBC和BDE的设置,使应用服务器程序能够连接本地或远程数据库。
1.可以通过一个数据库系统建立一个可操作的数据库,如利用本地数据库系统(FoxPro、InterBase、Access等)或是远程数据库系统(SQL Server、Oracle、Infomix等)。Delphi 4.0套件的Database Desktop 工具也可以建立多种类型的数据库。如在InterBase Server Manager中建立一个InterBase本地数据库IBSample.gdb,其中包括一个数据表SampleTable,UserName为“SYSDBA”,Password为“masterkey”(请注意:这时数据库文件与应用服务器程序在同一台PC机中,如果使用远程数据库系统建立数据库,则不一定和应用服务器程序放在同一台机器中,但必须与远程数据库服务器同机)。
2.在应用服务器程序所在的计算机中,打开控制面板的“32位ODBC”对数据库创建“数据源连接”。对本地数据库来说,可以在“用户DSN”页进行创建;对远程数据库来说,则可在“系统DSN”页中进行创建。创建时,设置DataSourceName项为“IBSample”,DataSource项指向数据库文件,如IBSample.gdb文件;其它各项也设为与该文件有关的内容。
3.在Delphi 4.0 的BDE Administrator 中可以对应用服务器程序所要连接的数据源进行高级配置。如在Databases页中选择数据库别名IBSample(即在上一步中设置的数据源),在Definition页中对“OPENMODE”、“SQLQRYMODE”等项进行相应的配置,配置好后就可以在Delphi的应用程序中访问数据库服务器了(这一步也可以忽略)。
创建应用服务器
1.在Delphi 4.0中首先创建一个应用程序,设置Form1.Caption=“服务器应用程序”,保存单元文件名为MyServerUnit1。
服务器应用程序界面
2.选择File→New→Multitier的Remote Data Module(远程数据模块),设置ClassName为“MyRemoteModule”, 保存单元文件名为MyServerUnit2。
3.在Form1中加入控件,设置各控件属性如下:
Ttable: Name=MyTable
TDatabase: Name=MyDatabase
DatabaseName=MyDatabaseName
AliasName=IBSample (即连接数据库的别名)
TDataSource: Name=MyDataSource
DataSet=MyTable
TDBGrid: Name=MyDBGrid
DataSource=MyDataSource
4.在MyRemoteModule中加入一个TProvider控件,设置NAME为“MyProvider”, 选取DataSet为“MyTable”。选取右键选单“Export MyProvider from data module”,将MyRemoteModule.MyProvider以OLE对象形式在操作系统中注册IProvider接口,供客户应用程序进行远程连接。
5.在MyServerUnit2中引用MyServerUnit1:implementation uses MyServerUnit1;
(注:通常将非可视化控件加入到数据模块如MyRemoteModule中,但Tdatabase因涉及名称冲突例外。在本例中为了使用方便,将非可视化控件加入到Form1中。)
6.在Form1的Create事件中通过Tdatabase控件对数据库连接进行自动登录操作:
procedure TForm1.FormCreate(Sender: TObject);
begin
//登录数据库
MyDatabase.LoginPrompt :=false;
MyDatabase.Params.Add(′USERNAME=SYSDBA′);
MyDatabase.Params.Add(′PASSWORD=masterkey′);
MyDatabase.open;
//连接数据表
MyTable.active:=false;
MyTable.DatabaseName:=′MydatabaseName′;
MyTable.TableName:=′SampleTable′;
MyTable.Active :=true;
end;
7.保存所有文件,运行应用服务器程序,系统自动将该服务器进行注册。当客户程序运行时,系统会自动启动应用服务器。
创建客户应用程序
(注:可在另外一台计算机中创建)
1.首先在Delphi 4.0中创建一个应用程序,设置Form1.Caption=“客户应用程序”,保存单元文件名为MyClientUnit1。
客户应用程序界面
2.选择File→New的Data Module(数据模块),设置Name为“MyDataModule”, 保存单元文件名为MyClientUnit2。
3.在MyClientUnit1中引用MyClientUnit2:
implementation
uses MyClientUnit2;
4.在MyDataModule中加入以下非可视化控件,设置各控件属性如下:
TMIDASConnection:
NAME=MyMIDASConnection
如果客户程序与应用服务器不同机,则先设置属性ComputerName,在网络中选取应用服务器所在的主机名,再设置相应的通信协议ConnectType及有关项,最后选择该主机中的应用服务器名称ServerName,如MyRemoteModule。
TClientDataSet:
Name=MyClientDataSet
先选择远程服务器名称:RemoteServer=MyMIDASConnection,再选择应用服务器提供的IProvider接口名称:ProviderName=MyProvider。
TDataSource : Name=MyDataSource
DataSet= MyClientDataSet
5.在Form1中加入以下控件,设置各控件属性如下:
TDBGrid: Name=MyDBGrid
DataSource= MyDataModule.MyDataSource
TButton: Name=MyButton
Caption=浏览数据
6.在MyButtonClick事件中激活MyClientDataSet控件,连接数据库使得MyDBGrid控件显示数据:
MyDataModule.MyClientDataSet.Active:=true;
7.保存所有文件,运行客户应用程序,服务器所在主机系统会自动启动应用服务器连接数据库。
最后,但愿你点击“浏览数据”项时会有一阵心动!
(附:以上程序在Win 95/Win 98对等网中通过。)