我试图将Firebird嵌入式服务器与Microsoft Visual C#2010一起使用。 所以这就是我到现在所做的:
已下载 Firebird .Net数据提供商(Firebird Client v2.5.2)。
已下载 Firebird嵌入式服务器(Firebird Embedded Server v2.5.0)。
在我的项目中添加了对FirebirdSql.Data.FirebirdClient.dll 的引用。
将 fbembed.dll文件提取并复制到我应用程序的目录。
将我的FDB文件“TEST.FDB”添加到我的应用程序的目录。
添加了“使用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());
}
我总是收到消息框,这意味着代码没有正确连接到我的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
答案 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
我在应用程序的开头将它们签出,以便我可以告知可能会出问题的地方。