【问题标题】:dbExpress TSQLConnection param problemsdbExpress TSQLConnection 参数问题
【发布时间】:2011-12-17 21:37:17
【问题描述】:

我是 dbexpress 的新手,我不知道如何在运行时为 SQL 主机名设置 TSQLConnection 参数。当我在客户端系统上安装程序时,TSQLConnectionHost 仍在从我在开发期间输入的开发系统中读取主机。

【问题讨论】:

  • 我从您的声誉中注意到您是新用户:我建议您阅读常见问题解答(如果您这样做,您将获得徽章!)。选择答案是有礼貌的,你选择答案的频率越高,人们就越有动力回答你的问题。

标签: sql delphi dbexpress


【解决方案1】:

TSQLConnection.ParamsTStrings 类型,这意味着它包含一组String 项目。对于 TSQLConnection,Params 拥有一组 Name=Value 对,其中 Name 是参数名称,Value 是参数值。要读取特定参数的值,请使用:

var
  s: String;
...
s := SQLConnection1.Params.Values['ParamName'];

要为特定参数赋值,请使用:

SQLConnection1.Params.Values['ParamName'] := 'NewValue';

(用实际参数名称替换“ParamName”,用实际新值替换“NewValue”。)

【讨论】:

  • 那么我需要将 dbconnections.ini 与我的可执行文件一起分发,不是吗?
  • 不一定。您可以在应用程序启动时简单地设置特定参数。您可以使用硬编码值显式分配所需参数(不推荐),也可以让最终用户在您的应用程序首次安装或运行时提供这些参数值。您可以在安装或首次运行时自动收集一些必需的参数值(如主机名)。将这些值存储在注册表或 INI 文件中,并在每次运行应用程序时读取它们并将它们分配给适当的参数。
【解决方案2】:

几年前,当我开始使用 dbExpress 进行开发时,我遇到了这个问题。在我的开发机器上,数据库位于 X 位置,而生产机器的数据库位于 Y 位置。我解决此问题的方法是将数据库的物理位置存储在注册表中(通过我编写的一个小型实用程序)然后使用以下代码加载正确的值。该位置可以存储在一个 INI 文件中,这需要对我的代码稍作改动,但这部分不太重要。

procedure TDm.SQLConnection1BeforeConnect(Sender: TObject);
var
 dir: string;

begin
 with TRegIniFile.create (regpath) do   // this is where I get the physical value
  begin
   dir:= ReadString ('firebird', progname, '');
   free
  end;

 with sqlconnection1 do
  begin
   close;
   params.values['database']:= dir;
  end;
end;

【讨论】:

    【解决方案3】:

    您的问题的原因是您在分发您的应用程序之前没有断开 SQLConnection 和所有数据集。 要做的事情 a) 确保所有组件均未连接。 b) 将 SQLConnection 的参数设置为空白。 c)当您的应用程序启动时,从 ini 文件中读取所需的连接参数,并用这些填充 SQLConnection。 d)然后连接,你会没事的! 问候 克里斯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      相关资源
      最近更新 更多