天天看點

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中缺少代碼。

代碼下載下傳

繼續閱讀