如何在我的Delphi应用程序中使用嵌入式Firebird

3

我的Delphi XE3应用程序使用Interbase组件连接到Firebird 2.5 SuperServer。

我启动了一个新项目来隔离这个问题,并尝试连接到我的软件数据库。结果如下。

1 - 我可以使用TIBDatabase正常连接到数据库。

我想部署它以使用嵌入式Firebird,我的问题是:

  1. 我能否使用Interbase组件连接到嵌入式Firebird?
  2. 如果是,那么我该如何做?
  3. 如果不行,那么是否有任何免费的Firebird组件可用?

AnyDAC组件现在作为FireDAC分发,不确定它们是否可以购买用于XE3,但XE3 Pro升级到XE4仅需50美元。您还可以使用http://www.devrace.com/ru/fibplus/的商业FIB+。您也可以尝试非TDataSet方法,如mORMot。 - Arioch 'The
2个回答

3

尽管Interbase和Firebird在API方面几乎兼容,但我记得有人报告说使用IB组件(这些组件随Delphi一起提供)连接到Firebird时会遇到问题。这些组件仅适用于Interbase,因此可以确保随着时间的推移,情况会变得更糟(更不兼容),而不是更好。因此,我建议使用官方支持Firebird的组件。我个人使用免费的UIB,但也有其他免费和商业性质的组件。


我也用过UIB,但我修补它以使用正确路径加载DLL,在分发EXE与FB-E DLL时也是这样。 - Arioch 'The

3

我能使用Interbase组件连接到嵌入式Firebird吗?

默认情况下,您可以使用Interbase组件来使用Firebird。

如果可以,那么我该怎么做?

您必须更改Firebird客户端库的名称,通俗地说。

  • 在dbExpress和Firebird服务器版本中 => 在程序的客户端使用fbClient.dll和dbxFb.dll。

  • 在dbExpress和Firebird嵌入式版本中 => 将fbEmbed.dll的名称更改为fbClient.dll,并在程序的客户端使用dbxFb.dll(即fbClient.dll和dbxFb.dll)。

  • 在IbExpress和Firebird服务器版本中 => 将fbClient.dll的名称更改为gds32.dll。

此外,Daniel Magine撰写了一篇有关Firebird和dbExpress的文章。 http://www.embarcadero.com/rad-in-action/database

如果不行,那么是否有任何免费的Firebird组件?

您可以使用ZEOS。

更新 在Firebird 3中:

当不包含网络协议而仅包含数据库名称时,远程提供程序将拒绝它,并且Engine12提供程序会出现并尝试打开命名的数据库文件。如果成功,则获得嵌入式连接到数据库。


2
c:\RAD Studio\9.0\source\data\dbx\Data.DbxFirebird.pas -> constructor TDBXFirebirdProperties.Create(DBXContext: TDBXContext); -> Values[TDBXPropertyNames.VendorLib] := 'fbclient.dll';你可以编写正确的程序,加载 fbEmbed.dll 而不是通过替换文件名来破坏全局操作系统状态。在大多数情况下,这也可以实际使用,但这让我想起了一些程序将所有 Windows 区域设置删除,只保留俄语,而不是学习正确的字体管理。以下是针对 MySQL 的示例:http://andy.jgknet.de/blog/2010/11/dbx-without-deploying-dbxdrivers-ini/ - Arioch 'The

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接