使用云露客户端的架构,通过TSelectBatchDataList、TSelectBatchData实现向中间件批量获取查询结果,有利于减少客户端和中间件的交互次数,将数据库中的查询结果通过中间件一次性打包给客户端,从而提供数据数据传送效率,现在本篇将简单介绍方法。在介绍该类之前,先介绍 TSelectBatchDataList这个结构体。
type
TSelectBatchDataList=record
sDBname,sSQLText, sParam: string;
FDData: OleVariant;
end;
通过本结构体,可以将多个数据集一起提交给TSelectBatchData方法,实现批量查询。
var
sErrormsg: string;
Data1: OleVariant;
rt: Integer;
aArrList :array [0..1] of TSelectBatchDataList; //有多少个数据集,定义多少个数组大小,支持依次查询
FSelectBatchData :TSelectBatchData; //批量查询类
begin
try
FSelectBatchData:=TSelectBatchData.Create;
aArrList[0].sDBname:='YX_DB';
aArrList[0].sSQLText:='Select * from tb_RYXXB Where 1=1 and sXM=:sXM';
aArrList[0].sParam:='sXM=王五';
aArrList[1].sDBname:='YX_DB';
aArrList[1].sSQLText:='Select * from tb_KHXXB Where 1=1';
aArrList[1].sParam:='';
FSelectBatchData.Url := sURL;
rt:= FSelectBatchData.Open(aArrList);
if rt<>0 then
begin
ShowMessage(FSelectBatchData.GetErrorInfo);
Exit;
end;
FSelectBatchData.SetData(qSelectBatch1,aArrList[0].FDData); //将服务器端的数据集装载到本地query(qSelectBatch1)
FSelectBatchData.SetData(qSelectBatch2,aArrList[1].FDData); //将服务器端的数据集装载到本地query(qSelectBatch2)
finally
FSelectBatchData.Free;
end;
多表以此类推,将数组的长度更改成你需要的长度,就能实现任意个数据集同时打开。