Delphi for iOS开发指南(16):在iOS客户端应用程序中连接企业级数据库

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的事件处理过程中:

 

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作为目标平台,然后运行你的应用程序。你应该可以浏览到数据。

 

 

 

 

 

 

 

 

 翻译的不好,请大家贱谅!

 欢迎加入OrangeUI For FMX 技术支持QQ群10900297

 

 

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值