Android三层数据库,Android开发数据库三层应用-DataSnap

核心提示:我觉得Delphi最强大的的功能之一就是开发数据库三层应用的DataSnap,在Android上的实现,首先是完成服务器的设计:(1)利用向导完成DataSnap服务器的框架,如下图:由于是实验,所以选择VCL程序,如果是实际应用,建议Service程序我习惯使用TCP/IP作为通讯协议,简单且速度...

我觉得Delphi最强大的的功能之一就是开发数据库三层应用的DataSnap,在Android上的实现,首先是完成服务器的设计:

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

5fdc257cc299c9c5db663f340edfa4f3.png

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

513176f3afdd25b7b0494b21e676a5d8.png

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

104fb4e05a4127198cdf95127616c898.png

缺省211端口

4a547649847f1c086e72fbe43931107e.png

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

864376b64881a1a2d5fb865bd5e4bb2d.png

(2)设置服务器数据

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

b4730f23496a524c319ed347b191a380.png

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

a9492cb4f907a07885ee1317a5d7726c.png

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

(3)新建Android客户端程序

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

b6239850a69601e5a26310ecfd6152a0.png

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

3a2b21b224707e89a3369acdb769e4f4.png

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

14865e08502f36b0c040a858e0f335f1.png

为实现应用服务器上Sample

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

b51db2aaec00da5165429e799ac0204a.png

新生成的类定义如下:

ddd3e7f615726f1fb0a14829b1fb197b.png

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

(4)Android界面显示数据

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

565e48d275c1eb2958cf5167eba31b39.png

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设计页面,如下图:

70b6896dcc17cde6153486a29815f298.png

4b9629ceb35b5f5aa26d2423887dfd9f.png

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

aadbb024c0f1f7503791473651b9ae6b.png

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

1f9244d37c53233aad9d56641811a8fc.png

TGrid展示数据如下图:

c7c7bc788fdabefe8e48dd08128b2b8b.png

TlistBox展示数据如下图:

c62414c0b78223830f7cbca22dbfaee6.png

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

34c61b34f6b1f8468d7f9bd1cf2d2af3.png

结论:

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值