2

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

4

3 回答 3

2

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

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

要将值分配给特定参数,请使用:

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

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

于 2011-12-17T22:14:05.810 回答
0

几年前,当我开始使用 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;
于 2011-12-18T07:02:47.303 回答
0

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

于 2012-03-07T16:22:11.707 回答