刚写完几个多层的例子,本来准备再写点其他稍微复杂的例子,很多同学就问数据库访问的方法,既然这样,就先写一下
数据库访问的过程与方法。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 ,我们就可以显示数据库了,如图
好了,我们已经把服务器端的数据显示到客户端了,今天就先到这里,后面再写数据库的修改和更新到
服务器端。