Delphi for iOS開發指南(16):在iOS客戶端應用程序中連接企業級數據庫

在開始這篇教程之前,你應該閱讀並執行下面教程:
•iOS開發指南(9):在iOS應用程序中使用ListBox組件來顯示TableView
•iOS開發指南(14):在iOS應用程序中使用InterBase ToGo

 


這篇教程描述了在iOS客戶端應用程序中連接企業級數據庫。

 


要連接到企業級數據庫,你需要一個客戶端的庫。在多數情況下,客戶端庫由數據庫供應商以DLL文件格式提供。這個方式不能在iOS Device上運行,因爲沒有可用的客戶端庫。要解決這個問題,你可以開發一箇中間層來連接到一個企業級數據庫,你的iOS應用程序可以與這個中間層會話。

 


RAD Studio提供DataSnap框架來讓你不需要寫代碼就能夠開發這個中間層(並且訪問這個中間層)。這篇教程描述了開發這個中間層,以及開發iOS客戶端的步驟。

 

 

 

創建中間層,一個DataSnap Server

 


首先,創建一個DataSnap Server,從數據庫數據器導出一個表。這篇教程使用一個DataSnap Server VCL Forms Application作爲DataSnap Server。

 


注:在這篇教程中,DataSnap Server(VCL應用程序)在多層數據庫應用程序中作爲中間層。你可以輕鬆創建並刪除一個DataSnap Server。在你理解這些基本步驟之後中,你可以將這個中間層轉換成Windows服務程序。

 


創建一個DataSnap Server VCL Application

 

1. 創建一個新的工程。選擇File>New>Other,然後從New Items對話框中選擇Delphi Projects>Data Snap Server>DataSnap Server來創建一個新的Delphi工程。


2.彈出New DataSnap Server嚮導,你需要按照這些步驟,不需要修改太多參數。

在New DataSnap Server嚮導中:
        1. 第一步,選擇VCL Forms Application作爲應用程序類型。
        2. 第二步,選擇TCP/IP協議,Server Methods Class,和Sample Methods。
        3.第三步,保持默認的TCP/IP通訊端口爲211。這會保證客戶端和服務端的通訊通過默認的DataSnap端口。
        4. 最後一步(第四)選擇TDSServerModule作爲Server Methods的父類。
3. 保存窗體單元爲DataSnapServerUnit.pas。
4. 切換到DataSnapServerUnit,更改窗體的Name屬性爲DSServerForm。
5. 保存Server Mothods單元(嚮導默認創建爲:ServerMethodsUnit1)爲ServerModuleUnit.pas。
6. 保存Server Containter單元(嚮導默認創建爲:ServerContainerUnit1)爲ServerContainerUnit.pas。
7. 保存新的工程爲DataSnapServerProject.droj。
8. 在Project Manager中選擇ProjectGroup1,然後保存這個工程爲DataSnapTutorialProjectGroup.groupproj。

 

 

 

 

 

 

 


在DataSnap Server上定義一個數據集

 

1. 切換到ServerContainerUnit.pas文件,然後替換在Implementation中的Uses子句爲:uses Winapi.Windows, ServerModuleUnit;
2.切換到ServerModuleUnit.pas文件。
3.在Form Designer中,更改Server Module的Name屬性爲DSServerModule_EMPLOYEE。
4.在Server Module上配置如下組件:

•拖放一個TSQLConnection組件在Server Module,然後設置如下屬性:


TSQLConnection封裝了一個數據庫服務器的dbExpress連接。
•設置Name屬性爲SQLConnection_EMPLOYEE。
•設置LoginPrompt屬性爲False。
•設置Driver爲InterBase。
•展開Drive節點,設置DataBase屬性爲C:\Users\Public\Documents\RAD Studio\11.0\Samples\Data\EMPLOYEE.GDB。
•更改Connected屬性爲True。如果你遇到一個錯誤,再次檢查一下Driver屬性。
•拖放一個TSQLDataSet組件到Server Module上,設置如下屬性:

TSQLDataSet用來連接使用dbExpress接收到的數據。
•設置Name屬性爲SQLDataSet_EMPLOYEE。
•設置SQLConnection屬性爲SQLConnection_EMPLOYEE。
•設置CommandType屬性爲ctTable。
•設置CommandText屬性爲EMPLOYEE。
•更改Active屬性爲Ture。如果你遇到一個錯誤,再次查檢你剛纔配置過的屬性。
•拖放一個TDataSetProvider組件到Server Module上,然後設置如下屬性:

TDataSetProvider將一個數據集裏面的數據打包,然後將這些可以傳輸的數據包到DataSnap客戶端。
•設置Name屬性爲DataSetProvider_EMPLOYEE 。
•設置DataSet屬性爲SQLDataSet_EMPLOYEE :

注:這篇教程使用InterBase作爲例子。然而,你可以連接到任意數據庫服務器,使用相同的步驟。選擇合適的Driver,以及其他屬性指向你的數據庫。

 

 

 

 

 

從DataSnap Server導出DataSet

 


你剛剛創建一個新的Server Module,包含一個DataSet和DataSetProvider(將數據打包傳遞給下一層)。下一步是導出這個Server Module到DataSnap Client。
1. 在Form Designer中,打開ServerContainerUnit。
2. 選擇DSServerClass1,然後更新已經存在的OnGetClass事件的事件處理過程。添加如下代碼到DSServerClass1的事件處理過程中:

 

  1. procedure TServerContainer1.DSServerClass1GetClass(DSServerClass: TDSServerClass;  
  2.   
  3.   var PersistentClass: TPersistentClass);  
  4.   
  5. begin  
  6.   
  7.   PersistentClass := TDSServerModule_EMPLOYEE;  
  8.   
  9. end;  
procedure TServerContainer1.DSServerClass1GetClass(DSServerClass: TDSServerClass;

  var PersistentClass: TPersistentClass);

begin

  PersistentClass := TDSServerModule_EMPLOYEE;

end;


 


 

使用這個事件處理過程,DataSnap Server會導出DataSetProvider,就像這個類中的公共方法一樣給一個DataSnap Client。基於上一節你所做的,現在你要導出這個DataSetProvider_EMPLOYEE到你的DataSnap Client。

 

 

 

運行DataSnap Server

 


DataSnap Server的實現已經完成。右擊DataSnapServerProject.exe,然後選擇Run Without Debugging。

 

 

 

現在你可以看到DataSnap Server運行在你的Windows電腦上。因爲這個DataSnap Server沒有任何界面元素,因此它是一個空窗體:

 

 

 

 

 

 

 


創建一個iOS應用程序連接到DataSnap Server

 


下一步,創建iOS客戶端應用程序

 


1.在Project Manager中,右擊DataSnapTutorialProjectGroup,然後選擇Add New Project。

2.在Delphi Projects頁選擇FireMonkey Mobile Application:

3.保存新的單元爲DataSnapClientUnit.pas。

4.保存新的工程爲DataSnapClientProject.droj。

5.打開DataSnapClientUnit,然後更改窗體的Name屬性爲DSClientForm。

6.拖放以下組件到FireMonkey Mobile Form Designer上:
•TSQLConnection組件(SQLConenction1)

TSQLConnction封裝了一個與數據庫服務器的dbExpress連接。當然,它也支持DataSnap Server。
•設置Driver屬性爲DataSnap。
•展開Driver屬性,然後設置HostName屬性爲DataSnap Server的主機名。
•設置LoginPrompt屬性爲False。
•設置Connected屬性爲True。

如果你遇到一個錯誤,請再次檢查你剛設置的屬性。
•TDSProviderConnection組件(DSProviderConnection1)

TDSProviderConnection組件使用dbExpress提供與DataSnap Server的連接。
•設置SQLConnection屬性爲SQLConnection1。
•設置ServerClassName爲TDSServerModule_EMPLOYEE。這個名稱需要與DataSnap Server裏的Server Module的類名匹配。
•設置Connected屬性爲True。
•TClientDataSet組件(ClientDataSet1)

TClientDataSet實現了一個與數據庫無關的數據集,它可以用作一個其他數據集的本地內存緩衝。
•設置RemoteServer屬性爲DSProviderConnection1。
•設置ProviderName屬性爲DataSetProvider_EMPLOYEE。這個名稱需要與DataSnap Server裏的DataSetProvider的名稱匹配。
•設置Active屬性爲True。
•TListBox組件
•設置Align屬性爲alClient。

7.打開LiveBindings Designer,按照下圖連接數據和用戶界面:
1. 點擊BindSourceDB1中的FULL_NAME,然後拖動鼠標指針到ListBox1的Item.Text上去:
2. 現在你已經創建並配置了一個在iOS上的DataSnap Client了。你應該能夠在IDE中看到從DataSnap Server中的數據了:

 

 

 

 

 

 

佈署MIDAS庫到iOS Simulator

 


要在iOS Simulator中執行你的應用程序,你需要佈置下列文件:
1.MIDAS庫
2.通過選擇Project>Deployment來打開Deployment Manager。
3.選擇Add Featured Files():
4.選擇如下模板,然後點擊OK,關閉Deployment Manager:

•MIDAS庫

 

 

 

 

 

 


在iOS模擬器,或iOS Device上運行你的應用程序

 


現在你的應用程序可以準備運行了。

在Project Manager中,選擇iOS Simulator或iOS Device作爲目標平臺,然後運行你的應用程序。你應該可以瀏覽到數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章