繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM