【问题标题】:Firedac Query Field list not updated after Schema change架构更改后未更新 Firedac 查询字段列表
【发布时间】:2014-03-11 06:09:00
【问题描述】:

我在 SQL 中创建一个临时表,然后向其中添加一个新字段。似乎 Firedac 正在缓存此临时表的字段列表。
下面的代码给了我“FDQuery5: Field 'Available' not found.”

  FDQuery5.Connection := FDConnection1;
  FDConnection1.ExecSQL('Select StockNo into #Temp from Stock');
  FDQuery5.SQL.Text := 'Select * From #Temp';
  FDQuery5.open;
  FDConnection1.ExecSQL('Alter Table #Temp add Available Char(1)');
  FDQuery5.Close;
  FDQuery5.open;
  ShowMessage(FDQuery5.FieldByName('Available').AsString);

将 XE5 与 Firedac 一起使用。 我已经尝试过 Connection.RefreshMetadataCache 并且我已经从 FetchOptions.Cache 中删除了 fiMeta。

如果我修改 SQL.Text,我可以让 Firedac 识别新字段。这是不可取的,因为我的应用程序需要在很多地方进行修改。

【问题讨论】:

    标签: delphi firedac


    【解决方案1】:

    在您调用 FDQuery5.Close 后查询仍然准备就绪。这意味着,它还缓存结果集结构。要准备查询,请将 FDQuery5.Close 替换为 FDQuery5.Disconnect。

    【讨论】:

    • Disconnect 是清除缓存的唯一选项吗,即使我们调用Unprepare 例如?
    • 断开连接 = 关闭并取消准备。因此,Unprepare 也可以工作,但仅限于数据集处于非活动状态时。
    猜你喜欢
    • 2015-07-10
    • 2021-04-14
    • 2015-12-15
    • 1970-01-01
    • 2019-06-28
    • 2015-09-23
    • 2011-03-20
    • 2010-11-10
    • 1970-01-01
    相关资源
    最近更新 更多