不管我做什么,我似乎都无法使用FireDAC连接到FireBird2.5嵌入式数据库。有趣的是,昨天它似乎起作用了,现在突然就不行了。
我开始重建一个干净的项目,这样我就可以一步一步地搞清楚到底是怎么回事。我将从Firebird下载的包的全部内容添加(复制)到我的应用程序目录,当然还有数据库本身。
为了避免文件夹问题,我将Delphi环境选项设置为将所有文件(和exe)放在同一个目录中。然后,我使用了Firebird *.doc文件夹中的建议,并将fbembed.dll重命名为fbclient.dll。(关于一些FireDAC问题,我读到Firedac需要fbembed.dll文件。嗯,我两种方法都试过了,反正都行不通)。但让我继续谈一谈fbclient.dll的第一个问题。
为了建立一个连接,我在数据模上放置了一个FDPhysFBDriverLink1和一个FDConnection1。
现在FDPhysFBDriverLink1:它是BaseDriverID是FB。对于DriverID,我尝试了两种建议:首先使用'FB‘,然后提供到fbclient.dll的完整路径。似乎没有什么能起作用的。
当我转到Firedac连接编辑器并将路径输入到我的数据库文件时,我会得到“无法加载供应商库(fbclient.dll或fbembed.dll)”错误。但这两个文件都位于应用程序exe文件夹中(如Embarcadero站点上的建议)。那么,FireDAC在哪里寻找文件呢?我有点厌倦了火鸟和FireDAC,因为他们不能简单地解释连接要成功必须做些什么。他们所提供的只是一些模糊的选择,而这些选项都是无效的。加上这个-加上这个,最后就失败了。
因此,如果有人有经验,如何用直接的答案(没有链接请,我看过,并尝试过他们所有),我将非常感谢。尝试几天来建立一个简单的联系是非常愚蠢的。我也尝试过使用UniDAC来获得类似的结果。要完成连接,我必须做些什么?
发布于 2014-08-16 17:01:05
问题似乎是: FDPhysFBDriverLink1需要这个信息:
BaseDriverID=FB
DriverID=FB
VendorLib=C:\Users\***\Documents\Delphi\FIREBIRD\fbembed.dll设置之后,我可以使用以下参数连接FDConnection1:
DriverID=FB
Database=C:\Users\***\Documents\Delphi\FIREBIRD\MYDB.FDB
User_Name=sysdba
Password=masterkey
Protocol=local发布于 2014-08-18 06:19:38
Firebird是一个客户机-服务器系统-它有服务器部分(fbserver.exe或fb_inet_server.exe)和客户端部分(fbclient.dll)。因此,当您连接到普通的(而不是嵌入的) Firebird实例时,应该将fbclient.dll指定为客户端库。
嵌入式Firebird是服务器和客户端在单个dll中的组合--它们都被写入了fbembed.dll (您可以查看它的大小并与fbclient.dll进行比较)。
当您使用嵌入式服务器时,您需要指定fbembed.dll作为客户端库,因此,您的代码中将嵌入Firebird服务器(即负责处理SQL查询的代码)。
如果您没有在FireDAC中指定供应商库,它将尝试加载第一个可用的dll,这很可能是fbclient.dll (来自System32?)。
FireDAC以及任何其他客户端组件都不知道您正在使用的Firebird的体系结构--它只是加载指定的dll并调用其API。它提供了很大的灵活性-您可以连接到嵌入式或SuperServer/经典/超级经典实例,只需对客户端库进行一次更改(并调整连接字符串)。
显然,但仍然重要的是,嵌入式不能用于远程连接(具有如下所示的连接字符串: severname:Disk:\Path\Database.fdb)。
https://stackoverflow.com/questions/25341287
复制相似问题