如何使用Visual C#2010连接和使用Firebird db嵌入式服务器

时间:2010-10-25 11:29:35

标签: c# database connection firebird

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

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

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

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

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

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

  6. 添加了“使用FirebirdSql.Data.FirebirdClient; ”声明。

  7. 到目前为止一直很好(我想)......

    现在,当我尝试使用以下代码连接到我的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());
             }
    

    我总是收到消息框,这意味着代码没有正确连接到我的DB文件。 难道我做错了什么?我真的还是C#的noob,我不知道怎么做或者修复它,我希望有人能帮助我。

    谢谢:)

    编辑:这是我在异常中获得的内容:

      

    FirebirdSql.Data.FirebirdClient.FbException   (0x80004005):无法完成   网络请求托管“127.0.0.1”。   --->无法完成托管“127.0.0.1”的网络请求。在   FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect()   在   FirebirdSql.Data.FirebirdClient.FbConnectionPool.Create()   在   FirebirdSql.Data.FirebirdClient.FbConnectionPool.CheckOut()   在   FirebirdSql.Data.FirebirdClient.FbConnection.Open()   在   fbTestApp.Form1.button1_Click(对象   发件人,EventArgs e)在C:\ Documents中   和设置\ ermac \我的文档\ Visual   工作室   2010 \项目\ fbTestApp \ fbTestApp \ Form1.cs中:行   25

4 个答案:

答案 0 :(得分:10)

我终于在工作6小时后找到了解决方案:)

google上的大多数答案要么错了,要么太旧了。 所有人都说我只需要将fbembed.dll文件包含到我的项目中..

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

重要通知:永远不要使用紧凑的.Net数据提供商。因为它们仅用于普通和超级火鸟服务器。它不适用于嵌入式服务器。

答案 1 :(得分: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,我想我们还必须将它们与许可证问题的应用程序一起分发?

答案 2 :(得分:2)

我将Firebird DLL放在名为Firebird的项目中的dir中。添加了Post Build事件以复制文件。

copy $(ProjectDir)Firebird\*.dll $(ProjectDir)$(OutDir)*.dll"

答案 3 :(得分: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

我在应用程序的开头将它们签出,以便我可以告知可能会出问题的地方。