码迷,mamicode.com
首页 > 其他好文 > 详细

关于FireDAC返回多结果集的问题

时间:2014-09-30 14:43:29      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   使用   数据   sp   div   

以前使用ADO, 如果SQL返回的结果集有多个 可以通过NextRecordset来依次获取

代码移植到FireDAC, 对于多结果集处理差不多, 但是还是有一些不一样的地方:

1.TDataSet本身是不支持多结果集的, 所以不要再这个上面浪费精力

2.切换到下一个结果集, ADO.NextRecordset 对应 FD.NextRecordSet

3.判断是否有下一个结果集, ADO的方法是NextRecordset <> nil, 而FireDAC的NextRecordSet没有返回值, 需要NextRecordSet以后判断FD.Active

4.ADO.Recordset对应的是FD.Data, 但是, Recordset是一个接口, 手动增加引用计数以后释放ADO对象仍然可以访问, 但是Data不行, FD对象释放以后Data内容也就没了, 虽然他也是一个接口, 但是实际数据还是存放到FD对象里的

5.FireDAC默认是不支持多结果集返回的, 需要手动设置 FetchOptions.AutoClose := False; 以后才可以

6.FireDAC如果你想吧得到的多结果集挨个取出来, 那么不能直接用临时变量保存Data(Data是个接口), 需要用一个内存表去保存:

  FDQuery1.Open;
  FDQuery1.FetchAll;
  FDMemTable1.Close; {一定要先close, 否则第二次设置其Data会报错}
  FDMemTable1.Data := FDQuery1.Data;
  FDQuery1.NextRecordSet;
  if FDQuery1.Active then
  begin
    FDQuery1.FetchAll;
    FDMemTable2.Close;
    FDMemTable2.Data := FDQuery1.Data;
  end;

 

关于FireDAC返回多结果集的问题

标签:style   blog   color   io   os   使用   数据   sp   div   

原文地址:http://www.cnblogs.com/hs-kill/p/4001597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!