FIREDAC返回多結果集

FIREDAC返回多結果集code

之前使用ADO, 若是SQL返回的結果集有多個 能夠經過NextRecordset來依次獲取對象

代碼移植到FireDAC, 對於多結果集處理差很少, 可是仍是有一些不同的地方:blog

1.TDataSet自己是不支持多結果集的, 因此不要再這個上面浪費精力接口

2.切換到下一個結果集, ADO.NextRecordset 對應 FD.NextRecordSet內存

3.判斷是否有下一個結果集, ADO的方法是NextRecordset <> nil, 而FireDAC的NextRecordSet沒有返回值, 須要NextRecordSet之後判斷FD.Activeio

4.ADO.Recordset對應的是FD.Data, 可是, Recordset是一個接口, 手動增長引用計數之後釋放ADO對象仍然能夠訪問, 可是Data不行, FD對象釋放之後Data內容也就沒了, 雖然他也是一個接口, 可是實際數據仍是存放到FD對象裏的class

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;
相關文章
相關標籤/搜索