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下好像还要部署,没试过

何剑
+关注
目录
打赏
0
0
0
0
7
分享
相关文章
开发YashanDB数据库?用 DBeaver for YashanDB 更顺手
数据库开发复杂易错,尤其在企业级场景中。为提升效率,YashanDB 团队基于 DBeaver 开源工具打造专属解决方案——DBeaver for YashanDB。它支持多类型数据库对象管理(表、视图、函数等),适配 YashanDB 特有表结构(HEAP、LSC),提供智能补全、语法高亮、SQL 调试等功能,让开发更高效流畅。推荐用于数据库应用开发团队、高频调试用户及中大型企业统一工具栈场景。
开发数据库不想写命令?YashanDB Developer Center 帮你轻松搞定
YashanDB Developer Center(YDC)是一款可视化的数据库开发工具,专为提升数据库开发效率而设计。它通过图形化对象管理让数据库对象清晰可见,提供智能SQL编辑器支持语法高亮与自动补全,实现PL调试的图形化操作,帮助快速定位问题。此外,操作记录可追溯,多端灵活部署,适配多种场景。无论是中大型企业研发团队,还是不熟悉命令行的业务开发者,YDC都能显著优化开发体验,堪称YashanDB的“可视化IDE”。
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
86 19
PolarDB开源数据库进阶课16 接入PostGIS全功能及应用举例
本文介绍了如何在PolarDB数据库中接入PostGIS插件全功能,实现地理空间数据处理。此外,文章还提供了使用PostGIS生成泰森多边形(Voronoi diagram)的具体示例,帮助用户理解其应用场景及操作方法。
83 1
Vue.js应用结合Redis数据库:实践与优化
将Vue.js应用与Redis结合,可以实现高效的数据管理和快速响应的用户体验。通过合理的实践步骤和优化策略,可以充分发挥两者的优势,提高应用的性能和可靠性。希望本文能为您在实际开发中提供有价值的参考。
91 11
【HarmonyOS Next开发】云开发-云数据库(二)
实现了云侧和端侧的云数据库创建、更新、修改等操作。这篇文章实现调用云函数对云数据库进行增删改查。
102 9
【HarmonyOS Next开发】云开发-云数据库(二)
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
158 2
HarmonyOs开发:关系型数据库封装之增删改查
每个方法都预留了多种调用方式,比如使用callback异步回调或者使用Promise异步回调,亦或者同步执行,大家在使用的过程中,可以根据自身业务需要进行选择性调用,也分别暴露了成功和失败的方法,可以针对性的判断在执行的过程中是否执行成功。
174 13
鸿蒙开发:实现键值数据库存储
对于数据量比较的小的,我们直接选择轻量级的用户首选项方式即可,而对于数据量比较大的情况下,直接可以使用数据库,而对于相对来说,比较大的数据,我们就可以使用键值型数据库方式
160 2
【AI应用启航workshop】构建高可用数据库、拥抱AI智能问数
12月25日(周三)14:00-16:30参与线上闭门会,阿里云诚邀您一同开启AI应用实践之旅!

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等