三层架构 android访问MSSQL数据库 程序 (服务器端)

时间:2022-05-17 03:29:39

  Delphi Xe5开始支持Android编程了。Delphi的春天终于来了!

  我也是刚接触XE,以前一直都在用D7,一直都在等它支持Android今天终于等来了,可以开始做项目了,虽然XE还存在很多BUG,但我相信,Embarcadero在努力,我们也在努力!

  下面我们来做一个三层架构,访问数据库的程序。

  一、服务器端

1、建立主程序

  New-other-webService-SOAP Server Application

三层架构 android访问MSSQL数据库 程序 (服务器端)

起名为: ServerFrm

在WebModal模块里加入如下控件:

三层架构 android访问MSSQL数据库 程序 (服务器端)

加入:FDConnection1、FDQuery1、DataSetProvider1 、ClientDataSet1、 FDPhysMSSQLDriverLink1

ClientDataSet1.ProviderName := DataSetProvider1;

DataSetProvider1.DataSet := FDQuery1;

FDQuery1.Connection := FDConnection1;

右击FDConnection1 选Connection Editer

三层架构 android访问MSSQL数据库 程序 (服务器端)

填好Driver ID: MSSQL

DataBase 、 User_name 、 Password、 Server 等信息。 OK!

在 public 声明

function TWebModule1.GetXMLData(str: string): TBytes;

然后在下在定义

function TWebModule1.GetXMLData(str: string): TBytes;
begin
  with ClientDataSet1 do
  begin
    Close;
    CommandText := str;
    Open;
    Result := ZCompressStr(XMLData);
    Close;
  end;
end;

这里的ZCompressStr函数是压缩ClientDataSet的XMLDATA以减少传输流量,客户端再进行解压即可。

记得加入USES zlib;

保存为 WDMForm.pas

 

三、我们在自动生成的ServerFrmImpl.pas里定义一个函数:

  public
    function GetData(str: string): TBytes; stdcall;

 

uses WDMForm;

function TDLMobileServer.GetData(SQL: string): TBytes;
var WebModuleClass: TWebModule1;
begin
  WebModuleClass := TWebModule1.Create(nil);
  try
    Result := WebModuleClass.GetXMLData(SQL);
  finally
    WebModuleClass.Free;
  end;

end;

这里的SQL是接收来自客户端的SQL语句。

4、我们在自动生成的ServerFrmIntf.pas里定义一个函数;

  function GetData(str: string): TBytes; stdcall; //这里只需要声明

这里已经完成服务器端的设计,点RUN

三层架构 android访问MSSQL数据库 程序 (服务器端)

再点Open Browser

三层架构 android访问MSSQL数据库 程序 (服务器端)

我们在此可以看到服务器端定义的函数: GetData

点START 服务器就配置完成了。

下一章我们来读客户端的设计。