使用delphi 開發多層應用(八)客戶端更新數據到kbmMW服務器


   上次寫了從kbmMW服務器給客戶端返回數據,我們實現了數據的查詢功能,但是當客戶端對數據進行了增加、更新、刪除的操作,

我們必須把這些操作返回到服務器端,並對后台數據庫進行更新。kbmMW 可以很方便的實現這一功能,今天就做一個更新數據到

服務器的例子。

   還是在昨天的基礎上,我們要把客戶端的信息更新到服務器上,首先需要在服務器端的Tkbmqueryservice 設置允許客戶端更新

的權限,如圖

即把allowclient 開頭的幾個屬性都設為True;

同時為了保證客戶端可以插入數據,要設一下TkbmMWIBDACResolver的insertkeyfields 為 True.

這樣服務器端就可以了,現在編譯並運行。

在客戶端,我們放置一個TDBNavigator 和一個按鈕。如圖

通過TDBNavigator 可以把對數據更改保存的客戶端,再通過"更新到后台" 按鈕把數據寫到服務端。

同時,由於我們使用的是直接sql 語句讀取數據的,因此,為了能夠在服務器端更新數據,必須提供兩個

參數,一個是tablename, 一個是keyfeilds. 所以我們更改一下讀取數據的過程:

procedure TForm2.Button1Click(Sender: TObject);
begin
kbmMWClientQuery1.close;
kbmMWClientQuery1.Query.Clear;
kbmMWClientQuery1.Query.Add('select * from RSSJ');
kbmMWClientQuery1.KeyFields:='XH'; // 設置主鍵
kbmMWClientQuery1.TableName:='RSSJ'; // 設置表名
kbmMWClientQuery1.Open;

end;


這樣,我們就可以先讀取數據,然后編輯數據,使用TDBNavigator 確認更改,最后再更新到后台服務器及數據庫服務器,

kbmMW 會根據更改的delta  自動生成更新的sql 語句,然后寫入數據庫。把客戶端的數據變化更新到后台非常簡單,代碼

如下:

procedure TForm2.Button3Click(Sender: TObject);
begin

kbmMWClientQuery1.Resolve();
end;

下圖為運行結果

為了更好的說明這個問題,我們再客戶端分別作增加,更新,刪除三個操作,然后更新到后台,

同時在服務器端使用devart 的dbmonitor 來檢測一下,看看服務器是怎么生成sql 語句的。

通過這個檢測,我們很清楚的可以看到各個操作的sql  都成功生成,並且順利執行了。

今天我們完成了單表的更新操作,但是在實際開發中,經常遇見的是多表同時更新的事務操作,多個表要要么同時更新成功,要么全部滾回。

今天太晚了,我們下次再講事務操作吧。



 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM