天天看點

使用delphi 開發多層應用(七)簡單的kbmMW多層資料庫通路服務

      剛寫完幾個多層的例子,本來準備再寫點其他稍微複雜的例子,很多同學就問資料庫通路的方法,既然這樣,就先寫一下

資料庫通路的過程與方法。kbmMW 支援很多資料庫通路方式和控件,前面在安裝時已經說過了。由于delphi 已經在d7 以後

不再推薦使用其傳統的資料庫方式BDE了,尤其是在delphi XE2 由于支援win64, 已經不支援使用BDE 了,為了示範友善,本文

背景資料庫選擇使用完全免費的firebird。firebird 是一個非常短小精悍的關系資料庫,支援存儲過程、觸發器等常用功能。

使用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 裡面注冊這個服務:

伺服器端就設計好了,現在可以編譯程式并運作了。

現在打開用戶端程式,在from 上添加以下幾個控件,

kbmMWClientQuery1: TkbmMWClientQuery;

 kbmMWBinaryStreamFormat1: TkbmMWBinaryStreamFormat;

 DataSource1: TDataSource;

 DBGrid1: TDBGrid;

  kbmMWClientConnectionPool1: TkbmMWClientConnectionPool;

如圖所示

并設定kbmMWClientQuery1的屬性如下圖

并按下圖設定 kbmMWClientConnectionPool1 的屬性

好了,更改button1 的點選事件

編譯運作,并點選button1 ,我們就可以顯示資料庫了,如圖

好了,我們已經把伺服器端的資料顯示到用戶端了,今天就先到這裡,後面再寫資料庫的修改和更新到

伺服器端。