You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi中如何禁用所有FDConnection、FDQuery和FDTable组件?

解决FireDAC设计时连接在客户端运行时自动触发的问题

针对你遇到的FireDAC组件在客户端启动时自动连接设计时数据库,导致后续读取INI配置设置连接出错的问题,以下是几种可行的解决方法:

方法1:全局禁用FireDAC自动连接

在程序启动的最早期(主窗体创建前),通过FDManager禁用所有连接的自动连接行为:

FDManager.AutoConnect := False;

这会阻止所有FireDAC连接组件在启动时自动尝试连接设计阶段配置的数据库,让你有足够时间读取INI并设置正确的连接参数。

方法2:提前读取INI配置并设置连接参数

把读取INI配置的逻辑移到主窗体OnCreate事件之前执行,比如在项目源代码(.dpr文件)中完成:

program YourApplication;

uses
  Vcl.Forms,
  UnitMain in 'UnitMain.pas' {MainForm},
  FireDAC.Stan.Intf, FireDAC.Stan.Option,
  System.IniFiles;

var
  Ini: TIniFile;
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;

  // 先读取INI配置并设置FireDAC连接参数
  Ini := TIniFile.Create('app_settings.ini');
  try
    MainForm.FDConnection1.DriverName := Ini.ReadString('DB', 'Driver', '');
    MainForm.FDConnection1.Params.Values['Database'] := Ini.ReadString('DB', 'Path', '');
    // 根据你的数据库类型添加其他必要参数,比如用户名、密码等
  finally
    Ini.Free;
  end;

  Application.CreateForm(TMainForm, MainForm);
  // 配置完成后手动连接
  MainForm.FDConnection1.Connected := True;
  Application.Run;
end.

这样主窗体创建时,连接参数已经是正确的生产环境配置,不会再触发设计时的测试库连接。

方法3:分离设计与运行时的连接配置

创建两个独立的FireDAC连接配置文件:

  • 设计时使用测试库的.fdconn配置文件
  • 运行时使用生产库的.fdconn配置文件

在程序启动时切换到运行时配置:

// 在主窗体OnCreate事件开头执行
FDConnection1.Close;
FDConnection1.LoadFromFile('prod_connection.fdconn');
FDConnection1.Connected := True;

发布程序时只附带运行时的配置文件即可,避免设计时配置被加载。

额外提醒

  • 确保所有关联的数据集组件(FDQuery、FDTable等)的Active属性在设计时设为False,防止它们自动触发连接;等配置完成后再手动激活这些数据集。

内容的提问来源于stack exchange,提问作者Masood Esnaashary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 20:49:54