1

我们在使用 .NET 提供程序 FbConnectionStringBuilder 类连接到远程 Firebird 服务器时遇到问题。我们可以以嵌入式或服务器模式连接到本地数据库文件,但是在建立与远程服务器的连接时,我们无法建立连接。

我们使用以下代码(服务器模式)分配 FbConnectionStringBuilder 类的属性。我省略了为嵌入模式分配属性的代码。

var cs = new FbConnectionStringBuilder
{
    Database = databaseSessionInfo.PathAbsoluteToDatabase,
    Charset = "UTF8",
    Dialect = 3,
};

cs.DataSource = databaseSessionInfo.Hostname;
cs.Port = databaseSessionInfo.Port;
cs.ServerType = (FbServerType)databaseSessionInfo.Mode;
cs.Pooling = true;
cs.ConnectionLifeTime = 30;

if (databaseSessionInfo.UseCustomUserAccount)
{
    cs.UserID = databaseSessionInfo.Username;
    cs.Password = databaseSessionInfo.Password;
}
else
{
    cs.UserID = Constants.DB_DefaultUsername;
    cs.Password = Constants.DB_DefaultPassword;
}

很简单。我们的软件包含一个连接配置屏幕,用户可以提供不同的连接属性。使用上面的代码将这些属性分配给 FbConnectionStringBuilder 类。

连接构建器类以以下格式输出连接字符串:

初始目录=“P:\Source\database.fdb”;字符集=UTF8;方言=3;数据源=localhost;端口号=3050;服务器类型=Default;pooling=True;连接生存期=30;用户ID=用户;密码=示例

然而,本页(Firebird Connection Strings)中指出的关于 Firebird 连接字符串的文献谈到了不同的结构。我只能假设 FbConnectionStringBuilder 类构建了一个满足 Firebird 要求的 Firebird 连接字符串。

  1. FbConnectionStringBuilder 类是否正确地将主机名附加到连接字符串?
  2. Firebird 服务器正在服务器上运行。我假设不需要在客户端上安装它?
  3. 客户端需要安装哪些库来支持远程服务器连接?
  4. 我们这样做对吗?

任何建议表示赞赏。

4

1 回答 1

0

回答您的问题:

1)是的,它会的。

2)正确,客户端库将通过网络连接。

3)如果你使用ADO库,只需FirebirdSql.Data.FirebirdClient.dll

4)也许,我不知道这是否会有所帮助,但这就是我的联系方式。

FbConnectionStringBuilder ret = new FbConnectionStringBuilder();
ret.DataSource = Host;
ret.Port = Port;
ret.Database = Database;
ret.UserID = User;
ret.Password = Password;
ret.Charset = CharacterSet; 
FbConnection ret = new FbConnection(connectionString);

有趣的是,您提供给 StringBuilder 的绝对路径是什么?它是服务器绝对路径,还是某种网络映射驱动器?

另外,我假设您已经查看了防火墙设置并允许端口 3050 入站。

于 2013-09-11T03:16:02.057 回答