FIREDAC返回多結果集


FIREDAC返回多結果集

以前使用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;

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM