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

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

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

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

3)支持所有的DELPHI SOCKET控件

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

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

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

 

下面演示如何使用。

1)DATASNAP演示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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演示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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演示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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;

  

posted @   delphi中间件  阅读(824)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2018-03-20 解决delphi10.2.3 android tools闪退
2015-03-20 同城购
点击右上角即可分享
微信分享提示