• TSQLConnection和TDSRestConnection


    TSQLConnection和TDSRestConnection

    两者都可以作为DATASNAP的客户端连接,且都可以自动生成DATASNAP的客户端远程方法代理类。

    TSQLConnection既可以作为TCP连接,也可以作为HTTP连接。TDSRestConnection只可以作为HTTP连接。

    TSQLConnection是dbexpress其中的一个控件,既可以连数据库,也可以连DATASNAP服务端。

    从TDSRestConnection自动的客户端远程方法代理类来看,它也依赖dbexpress。

    在没有FIREDAC以前,DELPHI官方的数据库引擎方案是dbexpress,而新的DATASNAP恰是那个时候推出来的(DELPHI2009),不免同dbexpress捆绑得太紧。

    以至后来虽然dbexpress在数据库驱动方面已经停更,但DATASNAP却没有清除dbexpress。

    TDSRestConnection自动生成的代理类:

      TServerMethods1Client = class(TDSAdminRestClient)
      private
        FtestCommand: TDSRestCommand;
        FtestCommand_Cache: TDSRestCommand;
      public
        constructor Create(ARestConnection: TDSRestConnection); overload;
        constructor Create(ARestConnection: TDSRestConnection; AInstanceOwner: Boolean); overload;
        destructor Destroy; override;
        function test(params: TMsgPack; const ARequestFilter: string = ''): TMsgPack;
        function test_Cache(params: TMsgPack; const ARequestFilter: string = ''): IDSRestCachedTMsgPack;
      end;
    

     TSQLConnection自动生成的代理类:

    TServerMethods1Client = class(TDSAdminClient)
      private
        FtestCommand: TDBXCommand;
      public
        constructor Create(ADBXConnection: TDBXConnection); overload;
        constructor Create(ADBXConnection: TDBXConnection; AInstanceOwner: Boolean); overload;
        destructor Destroy; override;
        function test(params: TMsgPack): TMsgPack;
      end;
    

      调用:

    procedure TForm2.Button1Click(Sender: TObject);
    begin
      var send: TMsgPack := TMsgPack.Create;
      send.Force('table').AsString := 'tunit';
      send.Force('sql').AsString := 'select top 1000 * from tunit';
      SQLConnection1.Open;
      var m: unit1.TServerMethods1Client := unit1.TServerMethods1Client.Create(SQLConnection1.DBXConnection);
      var recv: TMsgPack := m.test(send);
      ClientDataSet1.Data := recv.Force('data').AsVariant;
      m.Free;
    end;
    
    procedure TForm2.Button2Click(Sender: TObject);
    begin
      var send: TMsgPack := TMsgPack.Create;
      send.Force('table').AsString := 'tunit';
      send.Force('sql').AsString := 'select top 1000 * from tunit';
      var m: ClientClassesUnit1.TServerMethods1Client := ClientClassesUnit1.TServerMethods1Client.Create(DSRestConnection1);
      var recv: TMsgPack := m.test(send);
      ClientDataSet1.Data := recv.Force('data').AsVariant;
      m.Free;
    end;
    

      

     

  • 相关阅读:
    狼文化的一点思考
    数据可视化之风向图
    谈谈JavaScript代码混淆
    比尔盖茨2016好书推荐
    Cesium原理篇:glTF
    个人 产品 团队(下):个人与团队
    技术 产品 团队(上):如何成为超级个体
    惊艳的HTML5动画特效及源码
    精心挑选的HTML5/CSS3应用及源码
    炫酷霸气的HTML5/jQuery应用及源码
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/14153170.html
Copyright © 2020-2023  润新知