zoukankan      html  css  js  c++  java
  • 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;       

  • 相关阅读:
    01、MySQL_简介
    算法—打擂台法
    第10章 对文件的输入输出
    第9章 用户自己建立数据类型
    Spring Cloud
    JUC
    Swagger Learing
    JUC
    Spring Data
    SpringCloud
  • 原文地址:https://www.cnblogs.com/jieling/p/5865329.html
Copyright © 2011-2022 走看看