从Delphi应用程序连接到另一台计算机上的InterbaseXE7服务器

时间:2015-09-11 16:38:58

标签: delphi delphi-xe8 interbase

我有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主机服务器返回,这显然无法解决找到正确大写的问题。

1 个答案:

答案 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的区分大小写。