我有XE8和安装在两台机器上的InterbaseXE7版本,A& B.使用IBX或DBX我可以连接到在同一台机器上运行的IB服务器,并且可以毫无问题地访问其数据库。顺便说一下,我不是常规的IB用户。
我没有运气从机器A上的Delphi应用程序连接到机器B上的IB数据库:我遇到了各种各样的错误,包括一个关于无法找到指定文件的神秘错误(尽管做了DIR来自在我发现在那些情况下(连接到远程服务器),数据库名称必须在A上的Delphi应用程序中大写,就像它在db主机B上一样大写一个CMD提示来验证我的名称是正确的)。
因此,假设无法配置IB和/或IBX以避免这种区分大小写,我如何以编程方式检索B上正确大写的数据库名称列表(假设我无法访问B&# 39; s文件系统)来自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主机服务器返回,这显然无法解决找到正确大写的问题。
答案 0 :(得分:1)
事实证明,TIBServerProperties可以从具有正确大写的远程服务器获取DB别名,但不使用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的区分大小写。