Delphi XE之路(13)开发数据库三层应用的DataSnap

简介: <div style="margin:0px; padding:0px; font-family:punctuation,微软雅黑,Tohoma; font-size:14px; line-height:22px"> <span style="margin:0px; padding:0px; color:rgb(51,51,51)">我觉得Delphi最强大的的功能之一就是开发数据库三层
我觉得Delphi最强大的的功能之一就是开发数据库三层应用的DataSnap,在Android上的实现,首先是完成服务器的设计:

(1)利用向导完成DataSnap服务器的框架,如下图:

image

由于是实验,所以选择VCL程序,如果是实际应用,建议Service程序

image

我习惯使用TCP/IP作为通讯协议,简单且速度快,Sample Methods是演示和测试用

image

缺省211端口

image

使用TDSServerModule作为数据服务提供主体,非常方便变更为Service应用服务

image

 

(2)设置服务器数据

在TDSServerModule中设置数据,为简便起见,采用BDE引擎的DBDEMOS下animals.dbf数据库,有文字也有图片,如下图:

image

放置一个TDataSetProvider连接该数据源,如下图:

image

服务器至此设计完成,没有编写一行代码,只是调整了部分控件和窗体的名称。手动启动该应用服务程序。

(3)新建Android客户端程序

新建一个android客户端程序,在工程中增加一个TDataModule模块,用于放置与应用服务器的连接和数据,在模块窗体上放置TSQLConnection、TDSPProviderConnection、TClientDataSet三个控件,如下图:

image

其中TSQLConnection的属性设置中LoginPrompt要设为False,TDSPProviderConnection的属性设置如下:

image

其中ServerClassName是指应用服务器上作为数据服务提供主体的TDSServerModule的实例类名称,在这里我习惯性地重新命名了,缺省一般是TServerMethods1。TClientDataSet的设置如下图:

image

为实现应用服务器上Sample Methods在客户端的调用,需要创建服务类在客户端的实现类,右键点击TSQLConnection选择生成,如下图:

image

新生成的类定义如下:

image

 

以上过程完全同Windows下的DataSnap客户端开发。

 

(4)Android界面显示数据

Android下对数据的显示,与Windows下开发最大的区别是,无法使用TDBEdit一类的数据感应控件,取而代之的是标准控件,通过LiveBindings技术实现数据感应。要实现该过程,首先是在窗体上放置用于数据展示的标准控件,这里采用了TListBox和TGrid,通过TTabControl分开,如下图:

image

IP和Port输入框是为了更灵活地连接服务器,下面的按钮OnClick事件代码如下:

procedure TfrmMain.Button1Click(Sender: TObject); 
var 
  dm : TdmServerMethodsClient; 
begin 
  try

    //连接指定IP和Port的应用服务器 
    dmMain.SQLConn.Close; 
    dmMain.SQLConn.Params.Values['HostName'] := edtIP.Text; 
    dmMain.SQLConn.Params.Values['Port'] := edtPort.Text; 
    try 
      dmMain.SQLConn.Open; 
      try

       //创建应用服务器上的Sample Methods在客户端的实现类 
        dm := TdmServerMethodsClient.Create(dmMain.SQLConn.DBXConnection);

      //执行服务器上的方法 
        ShowMessage(dm.ReverseString(edtIP.Text)); 
      finally 
        dm.Free; 
      end;

      //开启客户端数据集 
      dmMain.cdsanimals.Close; 
      dmMain.cdsanimals.Open; 
    except 
      on E: Exception do 
        ShowMessage(E.Message); 
    end; 
  finally 
    dmMain.SQLConn.Close; 
  end; 
end; 

客户端界面与数据集之间采用LiveBindings方式,最好是打开LiveBindings设计页面,如下图:

image

image

 

由于TListBox只能显示一个字段数据,所以用另外一个窗体单独显示某条记录的详细信息,如下图:

image

 

启动并运行,点击按钮执行服务器函数后界面如下图:

image

TGrid展示数据如下图:

image

TlistBox展示数据如下图:

image

点击某条记录后,显示明细窗体,如下图:

image

 

结论:

(1)Android下开发DataSnap客户端,对数据的处理和服务函数调用与Windows下一致;

(2)Android客户端展示不能使用数据感应控件,只能使用标准控件,通过LiveBindings技术来实现数据关联;

(3)Windows下使用TClientDataSet需要用到Midas.dll,在Android下这个问题不存在了,也不需要单独部署Midas支持的相关文件,但是看材料iOS下好像还要部署,没试过

目录
相关文章
|
7天前
|
存储 安全 搜索推荐
酒店管理系统的数据库的应用以及选择
酒店管理系统数据库关乎运营效率和服务质量。数据库用于数据存储、管理、分析及客户关系管理,确保房态与预订精准。选择时重视性能稳定性、数据安全、易用性、可扩展性和成本效益。合适的数据库能提升酒店运营效率并优化客户体验。
19 2
|
1月前
|
存储 监控 关系型数据库
数据库核心术语解析与应用
数据库核心术语解析与应用
61 0
|
1月前
|
存储 运维 关系型数据库
数据的力量:构筑现代大型网站之数据库基础与应用
数据的力量:构筑现代大型网站之数据库基础与应用
49 0
|
2月前
|
存储 NoSQL 关系型数据库
现代数据库技术的发展与应用
本文将探讨现代数据库技术的发展趋势和广泛应用领域。我们将从传统关系型数据库开始,介绍NoSQL数据库、分布式数据库以及最新的图数据库等技术,探讨它们的特点和优势。此外,我们还将讨论数据库在大数据、云计算和物联网等领域中的应用案例,并展望未来数据库技术的发展方向。
|
1月前
|
供应链 数据库 开发者
深入了解数据库锁:类型、应用和最佳实践
深入了解数据库锁:类型、应用和最佳实践
|
3月前
|
关系型数据库 MySQL 数据库
深入了解MySQL数据库管理与应用
深入了解MySQL数据库管理与应用
163 0
|
9天前
|
存储 传感器 监控
数据库的应用
数据库广泛应用于电子商务、物流、酒店管理、医疗、航空、教育、政府和物联网等领域,用于高效存储和管理商品信息、订单数据、医疗记录、航班详情等各类数据,提升效率和服务质量。随着技术进步,其应用场景将持续扩展。
10 1
|
16天前
|
NoSQL 大数据 数据挖掘
现代数据库技术与大数据应用
随着信息时代的到来,数据量呈指数级增长,对数据库技术提出了前所未有的挑战。本文将介绍现代数据库技术在处理大数据应用中的重要性,并探讨了一些流行的数据库解决方案及其在实际应用中的优势。
|
28天前
|
存储 NoSQL 大数据
新型数据库技术在大数据分析中的应用与优势探究
随着大数据时代的到来,传统数据库技术已经无法满足海量数据处理的需求。本文将探讨新型数据库技术在大数据分析中的应用情况及其所带来的优势,为读者解析数据库领域的最新发展趋势。
|
1月前
|
存储 机器学习/深度学习 NoSQL
数据库技术的发展与应用
数据库技术的发展与应用