首页 > 代码库 > QB资料学习.01

QB资料学习.01

1.多数据集的读取  

   A.取数SQL的配置,借用TStringList进行存储多个不同的取数SQL  

   B.DBA取数:  DBA.ReadMultipleDataSet(TStringList)  

   C.结果集的提取 DBA.GetResultDataSet(序位,FCDS); //序位从0开始,对应于TStringList的sql序位;  

   D.结果集的清理: DBA.ClearResultDataSets;

 

2.多数据集的提交  

   A.提交前的无效信息清理:  DBA.ClearWriteDataSets  

   B.添加需要提交的数据集:  DBA.AddWriteDataSet(表名,清理SQL,要提交的CDS);  

   C.写库: DBA.WriteMultipleDataSets;  

-----------------------------------------------------------------------  

   经测:在多数据集提交时并未发现有任何地方标识关键字段值?  

   疑问:难道是在提交的过程中,通过表名取表结构,然后再来识别关键字?        

   那如果数据表未标识关键字,只是用户标识某个字段为关键字,如何执行?

 

3.Blob字段数据的处理  

   A.对于Blob字段内容->比如图片,文件等内容;先将其转为内存流后再做参数处理    

      FImgStream:=TMemoryStream.Create;    

      FImgStream.LoadFromFile(xxx); 或者其它的内存加载方式     

   B.借用DBA进行SQL处理    

      DBA.ParamParcel.Clear;    

      DBA.ParamParcel.PutStreamGoods(‘:XX‘,Stream);   //参数配置,前面加冒号,后面为形参   

      //形参与字段名无实际关系,可一致,也可不一致    

     DBA.ExecuteSQL(SQL语句,是否有返回值,是否事务处理,返回接收变量);    

     ** 在SQL语句中,配置的形参应该与Parcel中的形参一致  

  C.从DBA中取Blob字段信息    

     FImgStream:=TMemoryStream.Create;    

     TBlobField(CDS.fieldbyname(‘xx‘)).SaveToStream(FImgStream);     //将内容存到内存流中后,剩下的事情该怎么处理就怎么处理了

 

4.长耗时服务插件的回调业务  

   A.服务插件端:    

      a.创建接口对象:  Messager:=TAPIMessager.Create(InParcel);    

      b.从入口参数中提取回调对象来源信息==>需要客户端配合传入      

          TargetNodeId:=InParcel.GetAnsiStringGoods(‘ThisNodeId‘);      

          ConnectionId:=InParcel.GetInt64Goods(‘FromConnectionId‘);    

      c.实际业务处理(若业务中有客户端相关参数,直接从入参对象中提取)    

      d.回调结果返回      

            i: 创建返回参数,与常规插件一样,以QBParcel进行返回      

            ii:利用接口对象发送回调消息         

                  Messager.CallbackToConnection(TargetNodeID,ConnectionID,返回参数);      

            iii:返回参数的释放 QBParcel.Free;          

                接口对象的释放 FreeAndNil(Messager);  

  B.客户端业务处理    

      a.参数配置:依据实际业务需要,配置传入参数    

      b.通过 TDllPlugin.AsyncRPC(插件名,插件访问密码,传入参数) 调用长耗时服务    

      c.提交后,业务处理完成.至于处理多久,处理完成并返回后的处理,则将由消息对象处理了;    

      ----------   

      d.服务端返回长耗时业务后,回调的内容将由 TMsgReceiver 接收      

      ** 接收处理事件为: OnCallBackMessage(MsgParcel:TQBParcel;DllFileName:String);      

      ** 参数分别为服务端插件返回的参数及服务插件文件名  

 

5.本地化业务插件处理  

    A: 客户端业务插件的调用,主要使用的是 TQBClientModule进行调用;  

    B: 参数传递 TQBClientModule.InPutParcel 进行处理,处理方法与常规情况下的QBParcel一致  

    C: 本地化插件调用: TQBClientModule.ExecuteTask(‘业务插件文件名称.dll‘);  

    D: 返回结果的提取与处理: 使用 TQBClientModule.OutPutParcel;       

QB资料学习.01