dbExpress TSQLConnection参数问题

时间:2011-12-17 21:37:18

标签: sql delphi dbexpress

我是dbexpress的新手,我无法弄清楚如何在运行时为SQL主机名设置TSQLConnection parm。当我在客户端系统上安装我的程序时,TSQLConnectionHost仍在从我在开发过程中输入的开发系统中读取主机。

3 个答案:

答案 0 :(得分:2)

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

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

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

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

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

答案 1 :(得分: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;

答案 2 :(得分:0)

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