天天看点

rio multi-device客户端连接Rest Server

一、创建服务端。RIO 10.3版本

1、向导生成server端。

rio multi-device客户端连接Rest Server
rio multi-device客户端连接Rest Server
rio multi-device客户端连接Rest Server
rio multi-device客户端连接Rest Server
rio multi-device客户端连接Rest Server
rio multi-device客户端连接Rest Server
rio multi-device客户端连接Rest Server
rio multi-device客户端连接Rest Server

2、打开data explore窗口,选中mysql中的test数据库,选中表如cp_member,拖入servermethodsunit窗体。

rio multi-device客户端连接Rest Server

将Cp_memberTable的属性设置如下:

Cp_memberTable.Name := 'Cp_memberTable';
  Cp_memberTable.Connection := MysqlConnection;
  Cp_memberTable.SchemaAdapter := FDSchemaAdapter1;

  Cp_memberTable.SQL.Clear;
  Cp_memberTable.SQL.Add('SELECT * FROM test.cp_member');
           

3、按图所示,放置fdquery、fdschemaadapter、fdstanstoragebinlink、fdstanstoragejsonlink组件。

fdquery1的属性如下设置“

FDQuery1.Connection := MysqlConnection;

  FDQuery1.SQL.Clear;
  FDQuery1.SQL.Add('SELECT');
  FDQuery1.SQL.Add('cp_member.mer_id,');
  FDQuery1.SQL.Add('cp_member.mer_username,');
  FDQuery1.SQL.Add('cp_member.mer_phone,');
  FDQuery1.SQL.Add('cp_member.mer_password');
  FDQuery1.SQL.Add('FROM');
  FDQuery1.SQL.Add('cp_member');
           

4、在servermethodsunit的代码中加入。

public
    { Public declarations }
    function EchoString(Value: string): string;
    function ReverseString(Value: string): string;
    function GetTaipeiHotels: TStream;
  end;
{$METHODINFO OFF}

implementation


{$R *.dfm}

uses
  System.StrUtils;

function TServerMethods1.GetTaipeiHotels: TStream;
begin
  Result := TMemoryStream.Create;
  try
    with FDQuery1 do
    begin
      Close;
      open;
      SaveToStream(Result, TFDStorageFormat.sfBinary);
      Result.Position := 0;
    end;
  except
    raise;
  end;
end;
           

5、编译并运行。

二、编写客户端。

右击projectgroup

rio multi-device客户端连接Rest Server
rio multi-device客户端连接Rest Server
rio multi-device客户端连接Rest Server

注意在uses中要加入ippeerclient单元引用。(否则汇报错误,参看http://blog.sina.com.cn/s/blog_541686150102vsgq.html)

rio multi-device客户端连接Rest Server

2、在headerfooterformwithnavigation窗体中拖入。

2个button、一个fdconnection、fdmemtable、fdstoreproc、fdguixwaitcursor、fdstanstoragebinlink、fdphysdsdriverlink组件

rio multi-device客户端连接Rest Server

2、设置FDConnection1的属性。(保证第一步骤中的server运行的前提)

FDConnection1.Params.Clear;
  FDConnection1.Params.Add('Protocol=tcp/ip');
  FDConnection1.Params.Add('Server=127.0.0.1');
  FDConnection1.Params.Add('DriverID=DS');

  FDConnection1.Connected := True;
  FDConnection1.LoginPrompt := False;
           

也可以如图所示进行设置。

rio multi-device客户端连接Rest Server

3、设置FDStoredProc1的属性。

FDStoredProc1.Connection := FDConnection1;
  FDStoredProc1.StoredProcName := 'TServerMethods1.GetTaipeiHotels';
  FDStoredProc1.Name := 'ReturnValue';
           

并参看params子属性如下。

rio multi-device客户端连接Rest Server

4、编写查询和显示代码。

查询。

procedure THeaderFooterwithNavigation.Button1Click(Sender: TObject);
var
  lstringstream: TStringStream;
begin

  self.FDStoredProc1.ExecProc;
  lstringstream := TStringStream.Create(FDStoredProc1.Params[0].asBlob);
  try
    if (lstringstream <> nil) then
    begin
      lstringstream.Position := 0;
      self.FDMemTable1.LoadFromStream(lstringstream, TFDStorageFormat.sfBinary);
    end;
  finally
    lstringstream.Free;
  end;
end;
           

显示。

procedure THeaderFooterwithNavigation.Button2Click(Sender: TObject);
var
  Ivi: TListViewItem;
begin
  Self.ListView1.Items.Clear;
  Self.FDMemTable1.First;
  while (not FDMemTable1.Eof) do
  begin
    Ivi := ListView1.Items.Add;
    Ivi.Text := FDMemTable1.FieldByName('mer_phone').AsString;
    Ivi.Detail := FDMemTable1.FieldByName('mer_password').AsString;
    FDMemTable1.Next;
  end;
end;
           

结果。

rio multi-device客户端连接Rest Server

以上根据《Delphi 10.1 Berlin DataSnap 开发手册 高清版 V2017-5-22.PDF》第9章编写。只可惜sample中缺少代码。

代码下载

继续阅读