Firebird客户端安装

时间:2012-02-02 18:44:48

标签: c# .net database firebird firebird2.5

我正在尝试将使用Firebird v2.5数据库的应用程序部署到客户端计算机。

我正在尝试使用最小安装,而无需运行任何其他安装程序。根据我的收集,我需要做的就是将“FBClient.dll”复制到目标应用程序文件夹(包括firebird数据库文件)。我试过这个,它仍然报告错误,无法找到正确的.net数据提供程序。

例如

C:\Program Files (x86)\MyApp\myApp.exe 
C:\Program Files (x86)\MyApp\fbDatabase.fdb 
C:\Program Files (x86)\MyApp\fbclient.dll 

产生的错误是:

无法找到或加载已注册的.Net Framework数据提供程序。

还复制,重命名并包含fbclient.dll作为fbembed.dll

我还尝试将一堆其他文件复制到app目录,并将fbclient.dll放入c:\,c:\ windows,c:\ windows \ system。

我也尝试过安装客户端安装,没有任何乐趣。

有没有办法,我可以使用firebird数据库,而无需手动编辑machine.config文件或使用gac并经历我在dev机器上安装firebird的地狱?我想要一个用户可以安装的应用程序,而不需要开发人员安装它。

请注意,我正在编写的应用程序适用于单个计算机,单用户环境,谁知道如何双击安装按钮,注意范围为gnat,如果需要执行多次双击安装然后按GO,只会感到无聊并按下取消,忘记按钮。

我将文件“FirebirdSql.Data.FirebirdClient.dll”添加到应用程序文件夹中,我不再收到数据提供程序错误,而是获得以下内容

"Unable to complete network request to host \"DevMachine\"."

at FirebirdSql.Data.Client.Managed.Version10.GdsConnection.Connect()
at FirebirdSql.Data.FirebirdClient.ClientFactory.CreateManagedDatabase(FbConnectionString options)
at FirebirdSql.Data.FirebirdClient.ClientFactory.CreateDatabase(FbConnectionString options)
at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect()

我正在尝试连接以下

string file = @"C:\Program Files (x86)\MyApp\Test.FDB;";
FbConnection con = new FbConnection("User=SYSDBA;" + "Password=masterkey;" + "Database=" + file + "DataSource=Dev-VS-W7VM;" + "Port3050;" + "Dialect=3;" + "Charset=ISO8859_1;");
        try
        {
            con.Open();
        }
        catch (Exception e)
        {
            MessageBox.Show(e.ToString());
        }

我在项目和安装文件夹(.. \ MyApp)中包含了FirebirdSql.Data.FirebirdClient 提前谢谢。

4 个答案:

答案 0 :(得分:2)

您必须抓取zip并将FirebirdSql.Data.FirebirdClient.dll复制到bin文件夹。

我想知道你是如何在没有文件的情况下编写你的应用程序(可能安装了.msi):)

答案 1 :(得分:1)

您需要安装.net提供程序 http://www.firebirdsql.org/en/net-provider/

答案 2 :(得分:1)

数据库文件位于应用程序的exe模块旁边。因此,您需要在本地服务器上运行或嵌入式服务器才能处理数据。对于嵌入式服务器,最小的文件集(相对于应用程序文件夹指定):

\UDF (folder with UDF needed if any)
\Intl (with contents from FB installation)
fbembed.dll
firebird.msg
ib_util.dll
icudt30.dll
icuin30.dll
icuuc30.dll
Microsoft.VC80.CRT.manifest
msvcp80.dll
msvcr80.dll

对于完整规模的服务器(即不是嵌入式服务器),文件列表将为:

\UDF (folder with UDF needed if any)
\Intl (with contents from FB installation)
fbserver.exe or fb_inet_server.exe
fbclient.dll
firebird.msg
ib_util.dll
icudt30.dll
icuin30.dll
icuuc30.dll
Microsoft.VC80.CRT.manifest
msvcp80.dll
msvcr80.dll
security2.fdb
firebird.conf   (if non default parameters used)

但是你需要为FB设置服务记录 或者在应用程序启动之前将其作为应用程序启动。

可以使用安装Firebird作为服务 instsvc.exe 实用程序。适当的命令:

  instsvc install -s -a
  instsvc start

答案 3 :(得分:0)

另外你应该照顾两件事:

  1. FileName必须是本地文件,而不是其他服务器的共享文件夹。

  2. 在文件名前附加firebird服务器IP。如果您始终在firebird服务器中运行您的应用程序,或者您正在使用嵌入式fbclient.dll,那么它应该像

    一样

    FbConnection con = new FbConnection(“User = SYSDBA;”+“Password = masterkey;”+“Database = localhost:”+ file +“DataSource = Dev-VS-W7VM;”+“Port3050;”+“Dialect = 3;“+”Charset = ISO8859_1;“);

  3. 某些fbclient.dll版本将允许您不添加localhost并仍然连接到本地文件,或使用\\servername\c:\filename格式而不是localhost:c:\filename,但它已被弃用,不再适用(并且可以根据Windows版本工作)。