zoukankan      html  css  js  c++  java
  • DATASNAP数据序列之FIREDAC的TFDJSONDataSets

    DATASNAP数据序列之FIREDAC的TFDJSONDataSets

    DELPHI XE5开始增加了新的数据引擎——FIREDAC,它是跨平台的数据引擎,WINDOWS、LINUX、MAC、APP。。。。。。都可以使用。

    随之DATASNAP也增加了新的远程方法返回数据类型——TFDJSONDataSets。

    顾名思义TFDJSONDataSets是数据集列表,是多个数据集的集合,DATASNAP通过它一次可以返回多个查询结果数据集。

    服务端代码:

    function TServerMethods1.QuerySql2(const accountNo, sql: string): TFDJSONDataSets;
    var
    d: TfrmDB;
    begin
    Result := nil;
    if (accountNo = '') or (sql = '') then
    Exit;
    d := GetDBPool(accountNo).Lock;
    if not Assigned(d) then
    Exit;
    try
    try
    SetTraceOn(d);
    d.qryOpen.Close;
    d.qryOpen.sql.Clear;
    d.qryOpen.sql.Text := sql;
    d.qryOpen.Open;
    Result := TFDJSONDataSets.Create;
    TFDJSONDataSetsWriter.ListAdd(Result, '1', d.qryOpen);
    except
    on e: Exception do
    begin
    Result := nil;
    Log.WriteLog('TServerMethods1.QuerySql2 ' + e.Message);
    end;
    end;
    finally
    d.qryOpen.Close;
    GetDBPool(accountNo).Unlock(d);
    SetTraceOff(d);
    end;
    end;

    客户端代码:

    首先引用 Data.FireDACJSONReflect

    procedure TForm1.btnQuery2Click(Sender: TObject);
    var
    LDataSets: TFDJSONDataSets;
    LDataSet: TFDDataSet;
    begin
    DataSource1.DataSet := FDMemTable1;
    LDataSets := methods.QuerySql2('0', 'select * from t1');
    LDataSet := TFDJSONDataSetsReader.GetListValueByName(LDataSets, '1');
    FDMemTable1.Close;
    FDMemTable1.Data := LDataSet;
    end;

    可以看到客户端是使用TFDMemTable内存表,而不是TCLIENTDATASET。

    笔者已经多次提到过,FIREDAC引擎是使用TFDMemTable内存表来作为TCLIENTDATASET的替代。

    TCLIENTDATASET的数据序列格式是OLEVARIANT,它是微软COM的数据格式。

    现在DATASNAP正在去除对微软COM的过分依赖。

  • 相关阅读:
    第一个spring MVC
    AOP切点相关
    设计模式详解
    Spring基本原理模拟(IoC部分)
    AOP常用注解
    Integer.valueOf与Integer.parseInt的小疑惑
    IE10与IMG图片PNG显示不了 WP中的WebBrowser中无法查看PNG格式的图片
    去除Coding4Fun中MessagePrompt的边框(Border)
    windows phone 中的TextBlock的一些特性(TextWrapping,TextWrapping)
    九度 找出两个只出现了一次的数字
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/7468758.html
Copyright © 2011-2022 走看看