13

我试图将 Firebird 嵌入式服务器与 Microsoft Visual C# 2010 一起使用。所以这是我到目前为止所做的:

  1. 已下载Firebird .Net 数据提供程序Firebird Client v2.5.2)。

  2. 已下载Firebird Embedded 服务器Firebird Embedded Server v2.5.0)。

  3. 在我的项目中添加了对 FirebirdSql.Data.FirebirdClient.dll 的引用。

  4. 提取fbembed.dll 文件并将其复制到我的应用程序目录。

  5. 将我的 FDB 文件“TEST.FDB”添加到我的应用程序目录中。

  6. 添加了“ using FirebirdSql.Data.FirebirdClient; ”语句。

到目前为止一切顺利(我想)......

现在,当我尝试使用以下代码连接到我的 FDB 文件时:

    FbConnection con = new FbConnection("User=SYSDBA;" + "Password=masterkey;" + "Database=TEST.FDB;" + "DataSource=127.0.0.1;" + "Port=3050;" + "Dialect=3;" + "Charset=UTF8;");
    try  {
             con.Open();
         }
    catch (Exception ex) 
         {
            MessageBox.Show(ex.ToString());
         }

我总是得到消息框,这意味着代码没有正确连接到我的数据库文件。难道我做错了什么?我真的还是 C# 的菜鸟,我不知道如何做到这一点或修复它,我希望有人能帮助我解决这个问题。

谢谢 :)

编辑:这是我在异常中得到的:

FirebirdSql.Data.FirebirdClient.FbException (0x80004005): Unable to complete network request to host "127.0.0.1". ---> Unable to complete network request to host "127.0.0.1". at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect() at FirebirdSql.Data.FirebirdClient.FbConnectionPool.Create() at FirebirdSql.Data.FirebirdClient.FbConnectionPool.CheckOut() at FirebirdSql.Data.FirebirdClient.FbConnection.Open() at fbTestApp.Form1.button1_Click(Object sender, EventArgs e) in C:\Documents and Settings\ermac\My Documents\Visual Studio 2010\Projects\fbTestApp\fbTestApp\Form1.cs:line 25

4

4 回答 4

10

经过6个小时的工作,我终于找到了解决方案:)

谷歌上的大多数答案都是错误的或太旧了。他们都说我只需要在我的项目中包含 fbembed.dll 文件..

经过我做了一些调查。我发现我还需要将firebird.msg、firebird.conf、icudt30.dll、icuin30.dll、icuuc30.dll 和 ib_util.dll 添加我的项目文件和输出文件夹中。

重要通知:切勿使用紧凑的 .Net 数据提供程序。因为他们只为普通和超级火鸟服务器制作了它。它不适用于嵌入式服务器。

于 2010-10-25T14:05:34.817 回答
6

嵌入 Firebird 2.5 后,我将所有这些文件复制到应用程序目录:

aliases.conf (optional)
fbembed.dll
firebird.conf
firebird.msg
ib_util.dll
icudt30.dll
icuin30.dll
icuuc30.dll
Microsoft.VC80.CRT.manifest  : -- Not sure if this 3 files are necessary
msvcp80.dll                  : -- but i copy them :)
msvcr80.dll                  : -- see http://www.firebirdnews.org/?p=2248
intl\fbintl.conf   : Without those files you can't use
intl\fbintl.dll    : all charset and collations
udf\*  : if you want to use pre-build UDF

在连接字符串中,我指定使用 serverType=1 嵌入服务器:

User=SYSDBA;Password=masterkey;Database=E:\TEST.FDB;Dialect=3;Charset=UTF8;ServerType=1;

我也忘记了 IDPLicense.txt 和 IPLicense.txt,我认为我们还必须将它们与许可证问题的申请一起分发?

于 2010-10-25T22:58:11.073 回答
2

我将 Firebird DLL 放在名为 Firebird 的项目中的一个目录中。添加了一个 Post Build 事件来复制文件。

copy $(ProjectDir)Firebird\*.dll $(ProjectDir)$(OutDir)*.dll"
于 2012-07-28T16:26:22.190 回答
0

这些是 Firebird 3.0.5 所需的文件和发行版:

- root\plugins\engine12.dll

- root\intl\fbintl.conf
- root\intl\fbintl.dll

- root\fbclient.dll
- root\icudt52.dll
- root\icudt52l.dat
- root\icuuc52.dll

我在申请开始时检查了它们,这样我就可以知道可能出了什么问题。

于 2020-06-07T18:30:24.387 回答