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

  • 主题发起人 DelphiTeacher的专栏
  • 开始时间
D

DelphiTeacher的专栏

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi for iOS开发指南(16):在iOS客户端应用程序中连接企业级数据库




在开始这篇教程之前,你应该阅读并执行下面教程:
•iOS开发指南(9):在iOS应用程序中使用ListBox组件来显示TableView
•iOS开发指南(14):在iOS应用程序中使用InterBase ToGo





这篇教程描述了在iOS客户端应用程序中连接企业级数据库。




要连接到企业级数据库,你需要一个客户端的库。在多数情况下,客户端库由数据库供应商以DLL文件格式提供。这个方式不能在iOS Device上运行,因为没有可用的客户端库。要解决这个问题,你可以开发一个中间层来连接到一个企业级数据库,你的iOS应用程序可以与这个中间层会话。




RAD Studio提供DataSnap框架来让你不需要写代码就能够开发这个中间层(并且访问这个中间层)。这篇教程描述了开发这个中间层,以及开发iOS客户端的步骤。

qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png





创建中间层,一个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工程。

qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png
2.弹出New DataSnap Server向导,你需要按照这些步骤,不需要修改太多参数。


qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png

在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。


qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png














在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上,设置如下属性:


qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png

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 :
qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png


注:这篇教程使用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。

qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png





现在你可以看到DataSnap Server运行在你的Windows电脑上。因为这个DataSnap Server没有任何界面元素,因此它是一个空窗体:

qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png














创建一个iOS应用程序连接到DataSnap Server




下一步,创建iOS客户端应用程序




1.在Project Manager中,右击DataSnapTutorialProjectGroup,然后选择Add New Project。

qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png

2.在Delphi Projects页选择FireMonkey Mobile Application:qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png

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。qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png


7.打开LiveBindings Designer,按照下图连接数据和用户界面:qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png
1. 点击BindSourceDB1中的FULL_NAME,然后拖动鼠标指针到ListBox1的Item.Text上去:
2. 现在你已经创建并配置了一个在iOS上的DataSnap Client了。你应该能够在IDE中看到从DataSnap Server中的数据了:


qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png











布署MIDAS库到iOS Simulator




要在iOS Simulator中执行你的应用程序,你需要布置下列文件:
1.MIDAS库
2.通过选择Project>Deployment来打开Deployment Manager。
3.选择Add Featured Files(qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png):qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png
4.选择如下模板,然后点击OK,关闭Deployment Manager:


•MIDAS库

qgzBgqGzkm_ziqJW36sO9bryw9tyDA7l.png












在iOS模拟器,或iOS Device上运行你的应用程序




现在你的应用程序可以准备运行了。

在Project Manager中,选择iOS Simulator或iOS Device作为目标平台,然后运行你的应用程序。你应该可以浏览到数据。

















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

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





作者:DelphiTeacher 发表于2013/5/23 11:17:56 原文链接
阅读:3164 评论:14 查看评论

查看更多...
 
最后编辑:
顶部