我是dbexpress的新手,我无法弄清楚如何在运行时为SQL主机名设置TSQLConnection parm。当我在客户端系统上安装我的程序时,TSQLConnectionHost仍在从我在开发过程中输入的开发系统中读取主机。
答案 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)然后连接,你会没事的! 问候 克里斯