博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QB资料学习.01
阅读量:5331 次
发布时间:2019-06-15

本文共 1964 字,大约阅读时间需要 6 分钟。

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;       

转载于:https://www.cnblogs.com/jieling/p/5865329.html

你可能感兴趣的文章
较快的maven的settings.xml文件
查看>>
Git之初体验 持续更新
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
Maven之setting.xml配置文件详解
查看>>
SDK目录结构
查看>>
malloc() & free()
查看>>
HDU 2063 过山车
查看>>
高精度1--加法
查看>>
String比较
查看>>
Django之Models
查看>>
CSS 透明度级别 及 背景透明
查看>>
Linux 的 date 日期的使用
查看>>
PHP zip压缩文件及解压
查看>>
SOAP web service用AFNetWorking实现请求
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
Windows Phone开发(5):室内装修 转:http://blog.csdn.net/tcjiaan/article/details/7269014
查看>>
详谈js面向对象 javascript oop,持续更新
查看>>