zoukankan      html  css  js  c++  java
  • 咏南中间件(datasnap)新接口演示

    咏南中间件(datasnap)新接口演示

    /// <author>cxg 2020-12-19</author>
    /// datasnap http客户端接口调用演示
    
    unit Unit2;
    
    interface
    
    uses
      untGlobal,
      ClientClassesUnit1, MsgPack, Winapi.Windows, Winapi.Messages, System.SysUtils,
      System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms,
      Vcl.Dialogs,  Vcl.ToolWin, Vcl.ComCtrls, Data.DB,
      Datasnap.DBClient, Vcl.Grids, Vcl.DBGrids, Data.DbxDatasnap,
      Data.DBXCommon, Data.DbxHTTPLayer, Datasnap.DSClientRest;
    
    type
      TForm2 = class(TForm)
        ToolBar1: TToolBar;
        ToolButton1: TToolButton;
        DBGrid1: TDBGrid;
        DBGrid2: TDBGrid;
        ClientDataSet1: TClientDataSet;
        DataSource1: TDataSource;
        ClientDataSet2: TClientDataSet;
        DataSource2: TDataSource;
        DSRestConnection1: TDSRestConnection;
        ToolButton2: TToolButton;
        ToolButton3: TToolButton;
        ToolButton4: TToolButton;
        ToolButton5: TToolButton;
        ToolButton6: TToolButton;
        procedure ToolButton1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure ToolButton2Click(Sender: TObject);
        procedure ToolButton3Click(Sender: TObject);
        procedure ToolButton4Click(Sender: TObject);
        procedure ToolButton5Click(Sender: TObject);
        procedure ToolButton6Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form2: TForm2;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm2.FormCreate(Sender: TObject);
    begin
      DSRestConnection1.Host := '127.0.0.1';   //中间件ip and port
      DSRestConnection1.Port := 9000;
      DSRestConnection1.Context := 'yn/';
    end;
    
    procedure TForm2.ToolButton1Click(Sender: TObject);
    //查询
    var
      m: Tmethod1Client;
      send, recv: TMsgPack;
    begin
      send := TMsgPack.Create;
      m := Tmethod1Client.Create(DSRestConnection1);
      send.Force('cmd').AsString := 'query';   //命令字
      send.Force('accountno').AsString := '1';  //数据库帐套号
      send.Force('tablenum').AsInteger := 2;    //查询几个表?
      send.Force('sql1').AsString := 'select top 100 * from tunit';
      send.Force('sql2').AsString := 'select * from tgoods';
      recv := m.remoteMethod(send);
      if recv.Force('result').AsBoolean then
      begin
        ClientDataSet1.Data := DeCompressData(recv.Force('dataset1').AsVariant);  //unzip
        ClientDataSet2.Data := DeCompressData(recv.Force('dataset2').AsVariant);  //unzip
      end;
      m.Free;
    end;
    
    procedure TForm2.ToolButton2Click(Sender: TObject);
    //保存
    var
      m: Tmethod1Client;
      send, recv: TMsgPack;
    begin
      if ClientDataSet1.State in dsEditModes then
        ClientDataSet1.Post;
      if ClientDataSet2.State in dsEditModes then
        ClientDataSet2.Post;
      if ClientDataSet1.ChangeCount = 0 then
        Exit;
      if ClientDataSet2.ChangeCount = 0 then
        Exit;
      send := TMsgPack.Create;
      m := Tmethod1Client.Create(DSRestConnection1);
      send.Force('cmd').AsString := 'save'; //命令字
      send.Force('accountno').AsString := '1'; //数据库帐套号
      send.Force('tablenum').AsInteger := 2;
      send.Force('tablename1').AsString := 'tunit';
      send.Force('tablename2').AsString := 'tgoods';
      send.Force('delta1').AsVariant := ClientDataSet1.Delta;
      send.Force('delta2').AsVariant := ClientDataSet2.Delta;
      recv := m.remoteMethod(send);
      if recv.Force('result').AsBoolean then
      begin
        ClientDataSet1.MergeChangeLog;
        ClientDataSet2.MergeChangeLog;
      end
      else
      begin
        ClientDataSet1.Cancel;
        ClientDataSet2.Cancel;
      end;
      m.Free;
    end;
    
    procedure TForm2.ToolButton3Click(Sender: TObject);
    //存储过程
    var
      m: Tmethod1Client;
      send, recv: TMsgPack;
    begin
      send := TMsgPack.Create;
      m := Tmethod1Client.Create(DSRestConnection1);
      send.Force('cmd').AsString := 'spopen';//命令字
      send.Force('accountno').AsString := '1';//数据库帐套号
      send.Force('spname').AsString := '存储过程名';
      send.Force('params').AsString := '@参数1=1;@参数2=2';
      recv := m.remoteMethod(send);
      if recv.Force('result').AsBoolean then
      begin
        ClientDataSet1.Data := DeCompressData(recv.Force('dataset1').AsVariant);  //unzip
      end;
      m.Free;
    end;
    
    procedure TForm2.ToolButton4Click(Sender: TObject);
    //execsql
    var
      m: Tmethod1Client;
      send, recv: TMsgPack;
    begin
      send := TMsgPack.Create;
      m := Tmethod1Client.Create(DSRestConnection1);
      send.Force('cmd').AsString := 'execsql';//命令字
      send.Force('accountno').AsString := '1';//数据库帐套号
      send.Force('sql').AsString := 'insert into tunit(unitid,unitname) values (''1'', ''2'')';
      recv := m.remoteMethod(send);
      if recv.Force('result').AsBoolean then
      begin
        ShowMessage('execsql ok');
      end;
      m.Free;
    end;
    
    procedure TForm2.ToolButton5Click(Sender: TObject);
    //downfile
    var
      m: Tmethod1Client;
      send, recv: TMsgPack;
    begin
      send := TMsgPack.Create;
      m := Tmethod1Client.Create(DSRestConnection1);
      send.Force('cmd').AsString := 'downfile';//命令字
      send.Force('filenum').AsInteger := 2;//下载几个文件?
      send.Force('filename1').AsString := 'filename1';
      send.Force('filename2').AsString := 'filename2';
      recv := m.remoteMethod(send);
      if recv.Force('result').AsBoolean then
      begin
        recv.Force('file1').SaveBinaryToFile('filename1');
        recv.Force('file2').SaveBinaryToFile('filename2');
      end else ShowMessage('downfile fail');
      m.Free;
    end;
    
    procedure TForm2.ToolButton6Click(Sender: TObject);
    //upfile
    var
      m: Tmethod1Client;
      send, recv: TMsgPack;
    begin
      send := TMsgPack.Create;
      m := Tmethod1Client.Create(DSRestConnection1);
      send.Force('cmd').AsString := 'upfile';//命令字
      send.Force('filenum').AsInteger := 2;//上传几个文件?
      send.Force('filename1').AsString := 'filename1';
      send.Force('filename2').AsString := 'filename2';
      send.Force('file1').LoadBinaryFromFile('filename1');
      send.Force('file2').LoadBinaryFromFile('filename2');
      recv := m.remoteMethod(send);
      if recv.Force('result').AsBoolean then
      begin
        ShowMessage('upfile ok');
      end else ShowMessage('upfile fail');
      m.Free;
    end;
    
    end.
    

      

  • 相关阅读:
    免费的mysql客户端管理工具
    vue配置反向代理
    composer下载地址
    mysql多个字段模糊查询是否包含某个词
    Laravel 7 中文文档
    datatable显示文字改为中文
    MongoDB
    node 与 Ajax 的等待响应
    关于 <!DOCTYPE html> 对移动端和PC端的影响
    Vue中 scoped属性
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/14167044.html
Copyright © 2011-2022 走看看