使用delphi 开发多层应用(七)简单的kbmMW多层数据库访问服务

      刚写完几个多层的例子,本来准备再写点其他稍微复杂的例子,很多同学就问数据库访问的方法,既然这样,就先写一下

数据库访问的过程与方法。kbmMW 支持很多数据库访问方式和控件,前面在安装时已经说过了。由于delphi 已经在d7 以后

不再推荐使用其传统的数据库方式BDE了,尤其是在delphi XE2 由于支持win64, 已经不支持使用BDE 了,为了演示方便,本文

后台数据库选择使用完全免费的firebird。firebird 是一个非常短小精悍的关系数据库,支持存储过程、触发器等常用功能。

有兴趣的可以在http://www.firebirdsql.org/ 下载。访问firebird 数据,本文使用devart 出品的IBDAC,如果没有这个的话,可以

使用delphi 自带的IBexpress 代替。

    继续打开我们以前的例子,再from 里添加以下几个控件

  

 

IBCConnect 控件里面设置我们要访问的数据库配置。

kbmMWIBCConnectionPool 是数据库访问池,它的maxconnecions提供了数据库池连接的最大值,这个值可以根据系统的资源和

访问量来定,太大的话,对服务器资源要求太多,太小的话,会影响客户端访问的性能,同时cacheperformnce、MaxcacheAge、

maxCacheEntries、maxcacheRecordcount 用来控制数据库的缓冲情况,例如,如果多个客户端请求同一数据集的话,不用再到数据库

里面读取,在应用服务器里面直接返回到客户端,减少数据库的读取,提高系统的访问效率,这几个参数也是要根据实际应用来选取,没有

最好的,只有最合适的。我们今天的例子,暂时都使用默认值。

kbmMWInterbaseMetaData 主要是用来控制生成访问数据库SQL的具体语法的,例如不同的数据库对字段、参数、表名的表达不完全一样,

这个可以根据具体数据进行定制。

设置完上面的控件,我们进行下一步操作,点file->new->others... 出现kbmMW service wizard.  出现

  

这一次,我们选择query service / kbmMW_1.0,然后点下一步,

选择我们要使用的数据库访问方式devart ibdac,再选数据库连接池的位置,点下一步,

然后一路点下去,直到最后生成代码。最后就生成一个TkbmMWqueryservice,并出现下面的界面

可以看见上面几个allowclient... 是用来控制客户端访问方式的,我们今天要写一个

在客户端使用sql 语句访问服务器的例子,所以把Allowclinetstament 设为True,

同时为了客户端能够访问服务器的query,设置query属性为kbmMWIBDACQuery1,

设完后,在form1 里面注册这个服务:

procedure TForm1.FormCreate(Sender: TObject);
var
sd:TkbmMWCustomServiceDefinition;


begin
sd:=kbmMWServer1.RegisterService(Txalionsrv,false);
sd:=kbmMWServer1.RegisterService(TkbmMWQueryService1,false);



end;

服务器端就设计好了,现在可以编译程序并运行了。

现在打开客户端程序,在from 上添加以下几个控件,

kbmMWClientQuery1: TkbmMWClientQuery;
 kbmMWBinaryStreamFormat1: TkbmMWBinaryStreamFormat;
 DataSource1: TDataSource;
 DBGrid1: TDBGrid;
  kbmMWClientConnectionPool1: TkbmMWClientConnectionPool;

如图所示

并设置kbmMWClientQuery1的属性如下图

并按下图设置 kbmMWClientConnectionPool1 的属性

 

好了,更改button1 的点击事件

procedure TForm2.Button1Click(Sender: TObject);
begin
kbmMWClientQuery1.query.clear;
kbmMWClientQuery1.query.add('select * from rssj');
kbmMWClientQuery1.Open;
end;


编译运行,并点击button1 ,我们就可以显示数据库了,如图

 

好了,我们已经把服务器端的数据显示到客户端了,今天就先到这里,后面再写数据库的修改和更新到

服务器端。



 

你可能感兴趣的:(Delphi)