关于C#:Firebird客户端安装

Firebird client installation

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

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

例如

1
2
3
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,而无需经历在开发计算机上安装firebird的过程呢?我想要一个用户可以安装的应用程序,而不要求开发人员安装它。

请注意,我正在编写的应用程序是针对单机,单用户环境的,该应用程序知道如何双击安装按钮,并且需要特别注意,如果需要执行的操作不仅仅是双击安装,然后按GO键,只会感到无聊,然后按一下"取消,忘记它"按钮。

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

1
2
3
4
5
6
"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()

我正在尝试与以下内容联系

1
2
3
4
5
6
7
8
9
10
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());
        }

我已将FirebirdSql.Data.FirebirdClient包含在我的项目和安装文件夹(.. \\\\\\\\ MyApp)中
预先谢谢您。


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

我想知道您如何编写没有文件(可能已安装.msi)的应用程序:)


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

1
2
3
4
5
6
7
8
9
10
11
\\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

对于全尺寸服务器(即非嵌入式服务器),文件列表为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
\\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实用程序。适当的命令:

1
2
  instsvc install -s -a
  instsvc start


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


此外,您还应该注意两件事:

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

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

    FbConnection con =新的FbConnection(" User = SYSDBA;"" Password = masterkey;"" Database = localhost:"文件" DataSource = Dev-VS-W7VM;"" Port3050;"" Dialect = 3;""字符集= ISO8859_1;");

  • 某些fbclient.dll版本将允许您不添加本地主机并且仍然连接本地文件,或者使用\\\\servername\\c:\\filename格式代替localhost:c:\\filename,但是已弃用并且不应该再使用(并且可以根据Windows版本)。