通用的咏南数据序列、还原类

该博客介绍了咏南数据序列与还原功能,支持DELPHI7及以上版本,跨WIN32、WIN64、LINUX、MACOS、安卓、IOS等平台,能对基本和复杂数据类型、多数据集进行序列和还原,还支持所有DELPHI SOCKET控件,最后给出了DATASNAP、MORMOT、CROSS SOCKET的使用演示。

通用的咏南数据序列、还原类

1)支持DELPHI7及以上版本,更低DELPHI版本没有测试,理论上也支持

2)跨平台:支持WIN32,WIN64,LINUX,MACOS,安卓、IOS

3)支持所有的DELPHI SOCKET控件

4)支持STRING、INTEGER、DATATIME、BOOLEAN等基本数据类型的序列和还原

5)支持文件、流、数据集、BUFFER、结构体等复杂数据类型的序列和还原

6)支持多数据集的序列和还原

 

下面演示如何使用。

1)DATASNAP演示

function TServerMethods1.Query99(const accountNo, sql: string): string;
var
  d: TfrmDB;
  pool: TDBPool;
  serial: TynSerial;
begin
  Result := null;
  if (accountNo = '') or (sql = '') then
    Exit;
  pool := GetDBPool(accountNo);
  if not Assigned(pool) then
    Exit;
  d := pool.Lock;
  if not Assigned(d) then
    Exit;
  serial:= TynSerial.Create;
  try
    try
      SetTraceOn(d);
      d.qryOpen.Close;
      d.qryOpen.sql.Clear;
      d.qryOpen.sql.Text := sql;
      d.qryOpen.Open();
      serial.WriteFDDataSet(d.qryOpen);
      serial.WriteString('str', 'test');
      serial.WriteDateTime('time', Now);
      serial.WriteOleVariant('ole', d.dsp.Data);
      Result := serial.Text;
    except
      on e: Exception do
      begin
        Result := null;
        Log.WriteLog('TServerMethods1.QuerySql ' + e.Message);
      end;
    end;
  finally
    d.qryOpen.Close;
    pool.Unlock(d);
    serial.Free;
    SetTraceOff(d);
  end;
end;

  2)MORMOT演示

class function Tmymethod.querys2(const str: string): string;
// clientdataset主从表查询
var
  pool: TDBPool;
  dm: TfrmDB;
  serial: TynSerial;
  accountno, sql, sql2: string;
begin
  serial := TynSerial.Create;
  try
    try
      serial.Text := str;
      accountno := serial.ReadString('accountno');
      sql := serial.ReadString('sql');
      sql2 := serial.ReadString('sql2');
      serial.Text := '';
      pool := GetDBPool(accountno);
      dm := pool.Lock;

      dm.qryOpen.Close;
      dm.qryOpen.sql.Clear;
      dm.qryOpen.sql.Add(sql);
      serial.WriteOleVariant('dataset', dm.dsp.Data);

      dm.qryOpen.Close;
      dm.qryOpen.sql.Clear;
      dm.qryOpen.sql.Add(sql2);
      serial.WriteOleVariant('dataset2', dm.dsp.Data);

      Result := serial.Text;
    except
      on E: Exception do
      begin
        Result := '';
        Log.WriteLog('Tmymethod.querys ' + E.Message);
      end;
    end;
  finally
    pool.unlock(dm);
    serial.Free;
  end;
end;

  3)CROSS SOCKET演示

function TynFiredac.QuerySQL(const ASQL: string): string;
var
  serial: TynSerial;
begin
  Result := '';
  if ASQL = '' then
    Exit;
  serial := TynSerial.Create;
  try
    try
      FDQuery1.Close;
      FDQuery1.SQL.Clear;
      FDQuery1.SQL.Add(ASQL);
      FDQuery1.Open;
      serial.WriteFDDataSet('dataset', FDQuery1);
      Result := serial.Text;
    except
      on E: Exception do
      begin
        Result := '';
        Log.WriteLog('TynFiredac.QuerySQL ' + E.Message);
      end;
    end;
  finally
    FDQuery1.Close;
    FDConnection1.Close;
    serial.Free;
  end;
end;

  

转载于:https://www.cnblogs.com/hnxxcxg/p/10564002.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值