咏南中间件(datasnap)新接口演示
咏南中间件(datasnap)新接口演示
/// <author>cxg 2020-12-19</author>
/// datasnap http客户端接口调用演示
unit Unit2;
interface
uses
untGlobal,
ClientClassesUnit1, MsgPack, Winapi.Windows, Winapi.Messages, System.SysUtils,
System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms,
Vcl.Dialogs, Vcl.ToolWin, Vcl.ComCtrls, Data.DB,
Datasnap.DBClient, Vcl.Grids, Vcl.DBGrids, Data.DbxDatasnap,
Data.DBXCommon, Data.DbxHTTPLayer, Datasnap.DSClientRest;
type
TForm2 = class(TForm)
ToolBar1: TToolBar;
ToolButton1: TToolButton;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
ClientDataSet2: TClientDataSet;
DataSource2: TDataSource;
DSRestConnection1: TDSRestConnection;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
procedure ToolButton1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
DSRestConnection1.Host := '127.0.0.1'; //中间件ip and port
DSRestConnection1.Port := 9000;
DSRestConnection1.Context := 'yn/';
end;
procedure TForm2.ToolButton1Click(Sender: TObject);
//查询
var
m: Tmethod1Client;
send, recv: TMsgPack;
begin
send := TMsgPack.Create;
m := Tmethod1Client.Create(DSRestConnection1);
send.Force('cmd').AsString := 'query'; //命令字
send.Force('accountno').AsString := '1'; //数据库帐套号
send.Force('tablenum').AsInteger := 2; //查询几个表?
send.Force('sql1').AsString := 'select top 100 * from tunit';
send.Force('sql2').AsString := 'select * from tgoods';
recv := m.remoteMethod(send);
if recv.Force('result').AsBoolean then
begin
ClientDataSet1.Data := DeCompressData(recv.Force('dataset1').AsVariant); //unzip
ClientDataSet2.Data := DeCompressData(recv.Force('dataset2').AsVariant); //unzip
end;
m.Free;
end;
procedure TForm2.ToolButton2Click(Sender: TObject);
//保存
var
m: Tmethod1Client;
send, recv: TMsgPack;
begin
if ClientDataSet1.State in dsEditModes then
ClientDataSet1.Post;
if ClientDataSet2.State in dsEditModes then
ClientDataSet2.Post;
if ClientDataSet1.ChangeCount = 0 then
Exit;
if ClientDataSet2.ChangeCount = 0 then
Exit;
send := TMsgPack.Create;
m := Tmethod1Client.Create(DSRestConnection1);
send.Force('cmd').AsString := 'save'; //命令字
send.Force('accountno').AsString := '1'; //数据库帐套号
send.Force('tablenum').AsInteger := 2;
send.Force('tablename1').AsString := 'tunit';
send.Force('tablename2').AsString := 'tgoods';
send.Force('delta1').AsVariant := ClientDataSet1.Delta;
send.Force('delta2').AsVariant := ClientDataSet2.Delta;
recv := m.remoteMethod(send);
if recv.Force('result').AsBoolean then
begin
ClientDataSet1.MergeChangeLog;
ClientDataSet2.MergeChangeLog;
end
else
begin
ClientDataSet1.Cancel;
ClientDataSet2.Cancel;
end;
m.Free;
end;
procedure TForm2.ToolButton3Click(Sender: TObject);
//存储过程
var
m: Tmethod1Client;
send, recv: TMsgPack;
begin
send := TMsgPack.Create;
m := Tmethod1Client.Create(DSRestConnection1);
send.Force('cmd').AsString := 'spopen';//命令字
send.Force('accountno').AsString := '1';//数据库帐套号
send.Force('spname').AsString := '存储过程名';
send.Force('params').AsString := '@参数1=1;@参数2=2';
recv := m.remoteMethod(send);
if recv.Force('result').AsBoolean then
begin
ClientDataSet1.Data := DeCompressData(recv.Force('dataset1').AsVariant); //unzip
end;
m.Free;
end;
procedure TForm2.ToolButton4Click(Sender: TObject);
//execsql
var
m: Tmethod1Client;
send, recv: TMsgPack;
begin
send := TMsgPack.Create;
m := Tmethod1Client.Create(DSRestConnection1);
send.Force('cmd').AsString := 'execsql';//命令字
send.Force('accountno').AsString := '1';//数据库帐套号
send.Force('sql').AsString := 'insert into tunit(unitid,unitname) values (''1'', ''2'')';
recv := m.remoteMethod(send);
if recv.Force('result').AsBoolean then
begin
ShowMessage('execsql ok');
end;
m.Free;
end;
procedure TForm2.ToolButton5Click(Sender: TObject);
//downfile
var
m: Tmethod1Client;
send, recv: TMsgPack;
begin
send := TMsgPack.Create;
m := Tmethod1Client.Create(DSRestConnection1);
send.Force('cmd').AsString := 'downfile';//命令字
send.Force('filenum').AsInteger := 2;//下载几个文件?
send.Force('filename1').AsString := 'filename1';
send.Force('filename2').AsString := 'filename2';
recv := m.remoteMethod(send);
if recv.Force('result').AsBoolean then
begin
recv.Force('file1').SaveBinaryToFile('filename1');
recv.Force('file2').SaveBinaryToFile('filename2');
end else ShowMessage('downfile fail');
m.Free;
end;
procedure TForm2.ToolButton6Click(Sender: TObject);
//upfile
var
m: Tmethod1Client;
send, recv: TMsgPack;
begin
send := TMsgPack.Create;
m := Tmethod1Client.Create(DSRestConnection1);
send.Force('cmd').AsString := 'upfile';//命令字
send.Force('filenum').AsInteger := 2;//上传几个文件?
send.Force('filename1').AsString := 'filename1';
send.Force('filename2').AsString := 'filename2';
send.Force('file1').LoadBinaryFromFile('filename1');
send.Force('file2').LoadBinaryFromFile('filename2');
recv := m.remoteMethod(send);
if recv.Force('result').AsBoolean then
begin
ShowMessage('upfile ok');
end else ShowMessage('upfile fail');
m.Free;
end;
end.
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/14167044.html

浙公网安备 33010602011771号