天天看點

delphi mysql 三層_Delphi XE 10 跨平台三層資料庫應用 datasnap

(1)生成DataSnap伺服器的架構

初學者都是呆子,還是用向導吧,主菜單“File”->“New”->“Other…”得到“New Items”向導對話框。見圖一。

delphi mysql 三層_Delphi XE 10 跨平台三層資料庫應用 datasnap

圖一、向導

一般選擇有視窗的Forms程式,如果是正式場合,建議Service程式。見 圖二。

delphi mysql 三層_Delphi XE 10 跨平台三層資料庫應用 datasnap

圖二、選擇應用類型

如果伺服器程式運作在Windows平台就選“VCLapplication”,如果要跨平台,還是選“FireMonkeyapplication”,但生成的檔案要大一些。見圖三。

delphi mysql 三層_Delphi XE 10 跨平台三層資料庫應用 datasnap

圖三、選擇應用基本庫源

​預設TCP/IP為通訊協定,簡單快速,菜鳥專用的Sample Methods用于測試,見圖四。

delphi mysql 三層_Delphi XE 10 跨平台三層資料庫應用 datasnap

圖四、選擇通訊等參數

​預設211端口,别忘了“Test Port”一下更健康,見圖五。

delphi mysql 三層_Delphi XE 10 跨平台三層資料庫應用 datasnap

圖五、測試端口

不要使用預設的“TComponent”,而用TDSServerModule作為資料服務提供主體,非常友善以後變更為能掙錢的Service應用服務。

delphi mysql 三層_Delphi XE 10 跨平台三層資料庫應用 datasnap

圖六、選擇服務模式

​Finish這個向導後,硬碟一陣轟鳴,自動生成了工程及其三個主檔案,圖七:

ServerContainerUnit1.pas放的是網絡服務相關控件,非高手莫入。

ServerMehtodsUnit1.pas就是我們第二步主要的活動場所。

我們來做個簡單的資料庫連接配接測試.

在上個學習的基礎上,我們打開Server的ServerMethodUnit1子產品,在設計界面放上三個控件:

SQLConnection1: TSQLConnection;

SQLDataSet1: TSQLDataSet;

DataSetProvider1: TDataSetProvider;

注意:

1、如果使用sa,如果沒有密碼的話會連接配接失敗,需要建立一個帶密碼的使用者或者将sa設定上密碼.

2、如果連接配接SQL Server時報告錯誤,可以嘗試安裝一下MS SQL Server 2008 Native Client,這個包同樣可以應用在SQL Server 2000中.

然後将SQLDataSet1的SQLConnection設定為SQLConnection1,并且在CommandText中輸入指令,比如:select * from jobs (連接配接到pubs資料庫),設定Active為True.

最後一步,将DataSetProvider1的DataSet設定為SQLDataSet1.

OK,我們的伺服器就設計完成了,編譯運作.

接下來, 我們來做一個用戶端.在以前的DataSnap版本中(D7中好像是這樣,其他版本沒有測試),像剛才我們設計的東西要放在Remote Data Modul中,在連接配接的時候要使用DCOMConnection或者SocketConnection,現在不用了.

再打開我們上次設計的用戶端程式,在窗體上放置幾個資料處理控件,來吧,像一般的資料應用程式那樣放入資料感覺控件:

DBGrid1: TDBGrid;

ClientDataSet1: TClientDataSet;

DataSource1: TDataSource;

然後我們要放入其他連接配接遠端應用要用到的控件:

SQLConnection1: TSQLConnection;

DSProviderConnection1: TDSProviderConnection;

設定SQLConnection1的Driver為DataSnap,Connected為True(注意運作伺服器),設定DSProviderConnection1的SQLConnection為SQLConnection1,注意,下面是很重要的一步,即在ServerClassName中輸入TServerMethods1,不知道Delphi為什麼沒有自動取出,這裡需要手工錄入.

再設定ClientDataSet1的RemoteServer為DSProviderConnection1,現在就可以在ProviderName中選擇DataSetProvider1了,如果沒有上面那一步,這裡将沒有列出.

好了,設定ClientDataSet1的Active為True,設定DataSource1的DataSet為ClientDataSet1,設定DBGrid1的DataSource為DataSource1(這些活都太熟了吧?)

我們已經可以在網格中看到取回的資料來了.