![](/img/trans.png)
[英]Connecting from a Delphi app to an Interbase server on the same machine
[英]Connecting from a Delphi app to an InterbaseXE7 server on another machine
我已经将XE8和InterbaseXE7的版本安装在两台机器A和B上。使用IBX或DBX,我可以连接到在同一台机器上运行的IB服务器,并且可以毫无问题地访问其数据库。 顺便说一句,我不是普通的IB用户。
我从机器A上的Delphi应用程序连接到机器B上的IB数据库完全没有运气:我遇到各种错误,包括关于无法找到指定文件的神秘说法(尽管在CMD提示符下执行DIR)验证我的名称正确),直到我发现在这种情况下(连接到远程服务器),数据库名称必须在A的Delphi应用程序中大写,就像在数据库主机B上一样。
因此,假设无法配置IB和/或IBX来避免这种区分大小写的情况,那么我如何以编程方式检索B上正确大写的数据库名称列表(假设我无权访问B的文件系统)从A上的Delphi应用程序获得?
我尝试使用TIBServerProperties组件执行此操作,但使用的是这样的代码:
procedure TForm1.btnPropertiesClick(Sender: TObject);
var
S : String;
begin
IBServerProperties1.Active := True;
IBServerProperties1.FetchDatabaseInfo;
S := IBServerProperties1.DatabaseInfo.DbName[0];
Caption := S;
end;
,数据库名称是从IB主机服务器以大写形式返回的,显然这不能解决找到正确大写字母的问题。
事实证明,TIBServerProperty可以使用正确的大小写从远程服务器获取数据库别名,但不能使用DatabaseInfo属性。 可以从其AliasInfo属性获取信息(这是其中之一,事后看来很明显),如下所示。
procedure TForm1.btnPropertiesClick(Sender: TObject);
var
S : String;
i : Integer;
begin
IBServerProperties1.Active := True;
IBServerProperties1.FetchAliasInfo;
for i :=0 to IBServerProperties1.AliasCount - 1 do begin
S := IBServerProperties1.AliasInfo[i].Alias; // <- the .Alias has the
// same capitalization as on the server
S := S + ' ' + IBServerProperties1.AliasInfo[i].DBPath;
Memo2.Lines.Add(S);
end;
end;
,对于我的直接目标来说已经足够了。
不过,我仍然想知道是否有IB配置参数或类似参数可以避免引起我的q区分大小写。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.