unit Unit1;

interface

uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, Data.DB, Data.SqlExpr,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.Edit, System.Rtti, FMX.Layouts,
FMX.Grid, Data.Bind.EngExt, Fmx.Bind.DBEngExt, Fmx.Bind.Grid, System.Bindings.Outputs,
Fmx.Bind.Editors, Data.Bind.Components, Data.Bind.Grid, Data.Bind.DBScope,
IPPeerClient, Data.DBXDataSnap, Data.DBXCommon, FMX.Grid.Style, FMX.ScrollBox,
FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error,
FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Comp.DataSet,
FireDAC.Comp.Client, FireDAC.Stan.StorageJSON, FireDAC.Stan.StorageXML,
FireDAC.Stan.StorageBin, Data.FireDACJSONReflect;

type
TForm1 = class(TForm)
SQLConnection1: TSQLConnection;
GroupBox1: TGroupBox;
Label1: TLabel;
edtIP: TEdit;
Label2: TLabel;
edtPort: TEdit;
btnConnect: TButton;
StringGrid1: TStringGrid;
btnQuery: TButton;
btnSave: TButton;
FDMemTable1: TFDMemTable;
FDMemTable1c1: TStringField;
FDMemTable1c2: TStringField;
BindSourceDB1: TBindSourceDB;
BindingsList1: TBindingsList;
LinkGridToDataSourceBindSourceDB1: TLinkGridToDataSource;
btnStoredProcedure: TButton;
procedure FormDestroy(Sender: TObject);
procedure btnConnectClick(Sender: TObject);
procedure btnQueryClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure btnStoredProcedureClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.fmx}
{$R *.LgXhdpiPh.fmx ANDROID}

uses
Unit3;

var
svrMethods: TServerMethods1Client;

procedure TForm1.btnConnectClick(Sender: TObject);
begin
with SQLConnection1 do
begin
Params.Values['HostName'] := edtIP.Text;
Params.Values['Port'] := edtPort.Text;
Connected := True;
end;

if SQLConnection1.Connected then
svrMethods := TServerMethods1Client.Create(SQLConnection1.DBXConnection)
else
ShowMessage('连接中间件失败');
end;

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

procedure TForm1.btnSaveClick(Sender: TObject);
var
LDeltas: TFDJSONDeltas;
begin
if FDMemTable1.State in dsEditModes then
FDMemTable1.Post
else
Exit;
LDeltas := TFDJSONDeltas.Create;
TFDJSONDeltasWriter.ListAdd(LDeltas, '1', FDMemTable1);
if svrMethods.SaveData2('0', 't1', LDeltas) then
ShowMessage('save ok')
else
ShowMessage('save fail');
end;

procedure TForm1.btnStoredProcedureClick(Sender: TObject);
var
LDataSets: TFDJSONDataSets;
LDataSet: TFDDataSet;
begin
LDataSets := svrMethods.spOpen2('0', 'sp_test', '@c1:11');
LDataSet := TFDJSONDataSetsReader.GetListValueByName(LDataSets, '1');
FDMemTable1.Close;
FDMemTable1.Data := LDataSet;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
FDMemTable1.CachedUpdates := True;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
svrMethods.Free;
end;

end.

最新文章

  1. TSQL 数据类型转换
  2. 应用程序框架实战三十:表现层及ASP.NET MVC介绍(一)
  3. 原创:从零开始,微信小程序新手入门宝典《一》
  4. WPF学习之路(三) 属性与依赖
  5. iOS - Mac Apache WebServer 服务器配置
  6. LeetCode 176 Second Highest Salary mysql,select 嵌套 难度:1
  7. BZOJ SCOI2005骑士精神
  8. [c++]堆和栈的区别
  9. 字符串匹配算法之Sunday算法
  10. prob5 of 140
  11. .net core mysql ef
  12. 错误 CS0006 Metadata file 'E:\项目名称\xxxx.dll'
  13. 菜鸟入门【ASP.NET Core】6:配置的热更新、配置的框架设计
  14. [k8s]zookeeper集群在k8s的搭建(statefulset模式)-pod的调度
  15. python笔记7-if中的is ;in ;not搭配用法
  16. BZOJ2460 Beijing2011元素(线性基+贪心)
  17. java php c# 三种语言的AES加密互转
  18. wamp集成多个版本php (php7.0)
  19. HTML <area> 标签区域map标签
  20. Echarts图表横坐标显示不全

热门文章

  1. Linux php安装zip扩展
  2. final关键字所修饰的类有什么特点
  3. sed替换字符串中的某些字符
  4. 洛谷 P4073 [WC2013]平面图
  5. NOI2018_Day1_T1_归程
  6. [LUOGU] P2886 [USACO07NOV]牛继电器Cow Relays
  7. python_字符串类型
  8. 关于Python中包裹传参和解包裹的理解
  9. C第10章-----通过引用传递
  10. 转载 vue的基础使用