问题标签 [firebird-embedded]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4690 浏览

c# - 无法使用 .Net 客户端访问嵌入式 Firebird 数据库服务器

无法使用 .Net 客户端访问嵌入式 Firebird 数据库服务器

我的目标是开发一个使用嵌入式 Firebird 服务器但在尝试使用 .Net 客户端建立连接时遇到错误的程序。我已按照多个线程的建议使其工作,但我无法弄清楚。我尝试更改连接字符串和文件,但不断收到相同的错误。

以下是对我的研究以及迄今为止我所尝试的一切的详细解释:

  1. 如何使用 Visual C# 2010 连接和使用 Firebird db 嵌入式服务器

    我下载了链接中指定的文件,按照步骤运行了代码,得到了与原始海报相同的错误消息:

    FirebirdSql.Data.FirebirdClient.FbException Message=无法完成对主机“127.0.0.1”的网络请求。

    使用“localhost”代替 IP 会产生相同的错误。

    公认的答案是确保将所有 .dll 和配置文件复制到我已经完成的项目文件(包含代码的目录)和输出目录(bin/debug)中。我复制了 zip 文件夹中的每个文件。另外@Robin Van Persi 声明不使用“compact .Net data provider”,我怎么知道我是否在使用它?我从问题中的链接下载了文件。

    @PlageMan 提供的另一个答案是添加 ServerType=1; 连接字符串并删除产生这些错误的 DataSource 和 Port 属性:

    System.NotSupportedException Message=指定的服务器类型不正确。

    System.ArgumentException Message=提供了无效的连接字符串参数或未提供所需的连接字符串参数。

    @Toastgeraet 的最后一个答案是将 fbembed.dll 重命名为 fbclient.dll 或 gds32.dll。三种方法都试过了,没变。事实上http://www.firebirdsql.org/en/firebird-net-provider-faq/说 fbembded.dll 但这也不起作用。

  2. 使用firebird嵌入式数据库时如何解决c#中的连接错误?

    对将 fbembed.dll 重命名为 fbclient.dll 有相同的建议,这对原始海报也不起作用。连接字符串中接受的答案 ServerType=1,但@cincura.net 答案下的评论给了我一个新的调查可能性;处理器架构。不幸的是,在 64bt 和 32bit 版本之间切换没有任何区别。

    我认为切换到 32 位版本可能是答案,因为我使用的是 Visual Studios Express。

  3. 使用嵌入式 Firebird 时出错

    该线程中的最后一条评论是另一个人说更改为 32 位也没有解决问题。

  4. 尝试使用 firebird 嵌入式服务器 - 指定的服务器类型不正确

    我回去查找有关 ServerType 的信息,因为我将其视为 1 和 0 并找到了这篇文章。@Nigel 的答案是更新到 .Net 提供程序的最新版本。不幸的是,我无法弄清楚如何在 Firebird 网站 (4.5.1.0) 上使用最新版本,因为它缺少示例中的 FirebirdSql 命名空间。此外,Visual Studios 会在我导入错误版本的 .Net 时给我一些警告。

我究竟做错了什么?我是否需要使用不同的连接字符串或新版本的 Firebird/.Net 提供程序?我还缺少其他东西吗?

我意识到这个问题可能被认为是重复的,但到目前为止我找到的答案都没有解决我的问题。此外,我上面引用的以前的 StackOverflow Q/A 都已有多年历史了,所以我希望有人可以分享新的信息。

0 投票
2 回答
1448 浏览

sql - 使用多个表中的值更新语句

我正在尝试更新我的 Firebird-SQL 数据库中的值,我需要在 WHERE 子句中使用其他表中的值。

该声明如下所示:

显然,这在 Firebird-SQL 中不起作用。

这可能是一个非常简单的问题,但我不习惯 Firebird-SQL。

0 投票
1 回答
459 浏览

delphi - 如何将位于 UNC 的数据库连接到嵌入式服务器?

我有下一个具体情况。我有一个使用 Firebird 嵌入式服务器的应用程序。文件:应用程序执行程序、数据库、fbembed.dll 位于同一文件夹中。一切都很好,工作也很好。

现在我的客户这样说:

我想将您所有的应用程序文件放在服务器上,并通过本地网络从所有工作站运行它。

因此,正如我所见,我在服务器上启动应用程序并启动。但是数据库连接字符串现在看起来像:

//服务器/共享/db.fdb

是的,我从这里知道关于允许的 firebird 路径的约定:常见问题解答:什么是连接字符串?

我不明白嵌入式服务器应该使用什么?有可能吗?

0 投票
0 回答
569 浏览

c# - 带有 Firebird 客户端的 .NET 控制台应用程序在程序结束时崩溃

这是一个朋友的小项目,其目标是从给定的 firebird 数据库文件中读取数据并将其放入 MS Office 2010 模板中......所以 Firebird 作为数据库后端和 .NET 4.x 项目类型的办公室都是给定的堆栈。

我编写了一个小型(控制台)测试应用程序来与 firebird 嵌入式数据库客户端取得联系,并且已经遇到了我没有摆脱的第一个问题。我的代码如下:

一切正常,代码在外壳上显示患者数据库的所有名称。我已经使用调试器检查了 datareader 和 dbConnection 是否正确关闭(),就是这种情况。

在最后一行之后,我每次都会收到一条令人讨厌的 Windows 错误消息(那种内存访问冲突),我不知道为什么会发生这种情况。

更新:看来,它与 fbintl.dll 有关

更新 2:如果我连接到 firebird 服务器,则不会发生这种情况(不幸的是,这对于我的轻量级办公室模板项目来说不是一个好的解决方案)

有人知道为什么会这样吗?

我在用:

  • Firebird ADO.NET Provider 4.6(来自 NuGet)
  • Firebird 嵌入式数据库 2.5.3 x64

我实际上不确定数据库文件是用哪个版本的火鸟创建的

0 投票
1 回答
1256 浏览

c# - 如何使用 ASP.NET 5 运行 Firebird 嵌入式数据库?

我正在尝试从我的 MVC 6 应用程序运行 firebird 嵌入式数据库。我正在使用 Fluent Nhibernate。配置如下图所示:

我还安装了 nuget 包FirebirdSql.Data.FirebirdClient

但是我收到错误:

Unable to load DLL 'fbembed': The specified module could not be found.

我正在尝试将此 dll 包含在我的参考中,但随后我收到构建错误,指出无法恢复此参考。

在此处输入图像描述

在此处输入图像描述

我需要做什么才能让它运行?

PS:由于类似的情况/错误,我也未能使用 SQLite。

0 投票
1 回答
453 浏览

c# - 如何释放数据库文件?(NHibernate 和嵌入式 Firebird 数据库)

我们正在使用 Nhibernate 连接到本地 firebird 数据库文件。我们目前加载它嵌入,但在某些情况下需要释放它,以便可以移动或删除磁盘上的文件。简单地在 nhibernate 中关闭和处理 sessionfactory 是行不通的。该文件仍在使用中。

这是可能的还是我们需要开始一个单独的过程?

0 投票
2 回答
5874 浏览

.net - 如何设置 .Net 应用程序以使用 firebird 实体框架提供程序(用于嵌入式数据库)

我一直在尝试查找有关如何为 firebird 数据库(嵌入式版本)设置实体框架 6.0 提供程序的任何文档,但在 .Net 应用程序中没有任何运气。

我能找到的大多数文档都是关于 ADO.Net 提供程序的,但我正在寻找一个特别的实体框架:

1) 如何使用 app.config 设置 firebird EF6 提供程序 2) 以及如何使用新的 EF6 代码设置(通过覆盖 DbConfiguration 类:我不确定传递给 SetExecutionStrategy() 和 SetDefaultConnectionFactory() 方法的内容)火鸟 EF6 提供程序。

提供者的链接在这里: http ://www.firebirdsql.org/en/additional-downloads/

以及我在网站上找到的关于 .net 的文档(但仅适用于 ADO,实体框架 dll 上没有任何内容)。 http://www.firebirdsql.org/en/net-examples-of-use/

我唯一知道的是,对于嵌入式数据库,ServerType 应该是 1

0 投票
1 回答
4508 浏览

database - 通过嵌入式 dll 从多个应用程序连接到一个 firebird 数据库

我对数据库编程比较陌生。我使用带有 IBPP 的 firebird 2.5。我至少有两个使用 sampe firebird 数据库的应用程序。我想连接嵌入式变体(fbembedded.dll、icudt30.dll、icuc30.dll),因为它将是客户 PC 上的主机应用程序。我编写了一个从数据库读取数据的简单测试应用程序,并同时启动了该应用程序 3 次。一切正常。

但是现在我不确定这是否始终有效,并且是否稳定且不会损坏数据。因为当我使用查看器 ibexpert 与数据库建立连接时,我的测试应用程序无法连接到数据库。此外,文档 sais ( firebirdEmbedded ):

您可以同时运行多个嵌入式服务器,并且可以让多个应用程序连接到同一个嵌入式服务器。拥有一台已经运行的常规服务器也不是问题。 但是,嵌入式服务器会在成功连接后锁定数据库文件以供其独占使用。这意味着您不能同时从多个嵌入式服务器进程(或任何其他服务器,一旦嵌入式服务器锁定文件)访问同一个数据库。

文档编制正确吗?我的示例应用程序似乎相反。不久前,我在我的电脑上安装了一个 firebird 超级服务器,但在测试之前将其卸载。

0 投票
1 回答
669 浏览

firebird2.5 - Firebird Embedded Server 是否提供多进程并发?

Firebird 数据库有多种风格。其中之一是 Windows Embedded 服务器。

我希望将它嵌入到运行多个线程的应用程序中。每个线程可以同时访问服务器

有没有人有使用它的经验?Firebird Embedded Server 是否提供多进程并发?

0 投票
0 回答
523 浏览

linux - 如何在不运行服务的情况下通过 IBPP 使用嵌入在 Linux 上的 firebird?

我们即将通过 IBPP 在我们的软件中集成一个 firebird 数据库。根据火鸟文档,这应该是可能的。

在服务运行时,我们已经设法通过 IBPP 使用 firebird 数据库。但是,我们希望避免运行服务。在 Windows 上我们已经完成了这项工作 - 但在 linux 端有两个主要区别:

安装

在 Windows 上,不需要进行安装。正如文档所说,在 Linux 上似乎是这样:

最后,您不能只将 libfbembed.so 与您的应用程序一起提供并使用它来连接到本地数据库。在 Linux 下,您总是需要正确安装的服务器,无论是 Classic 还是 Super。

这是真的?我发现 firebird 文档有时已经过时了。如果这仍然有效,如何处理这个安装?我们可以在客户的电脑上运行它吗?我查看了shell脚本。它启动一个服务。对我来说,在安装过程中似乎需要运行此服务。无论如何,如果该服务仅在安装时运行并且之后不再需要,这将没有问题 - 但我不确定这一点。

IBPP

在 Windows 上,您只需通过 loadlibrary 加载 DLL:我们将 fbembed.dll、icuuc30.dll 和 icudt30.dll 放在 any_dirctory 上,将 IBPP 中调用嵌入式 dll 的段落更改为 loadlibary("any_directory\fbembed.dll") 和将 any_directory 添加到 PATH 变量。现在一切正常。(旁白:通过这样做,可以通过我们使用 IBPP 创建的 DLL 调用数据库。我们提供给客户的每个 EXE 都可以使用该 DLL,而无需关心 EXE 所在的路径)。

但在 Linux 上,我没有找到完成此操作的代码。在这个HOWTO中,似乎需要一个特殊的目录结构。这真的有必要吗?是否可以将 .so 文件放在 any_directory 并从 another_directory 运行应用程序?是否有必要将 loadlibary 添加到 IBPP 的 Linux 部分?(顺便说一句:我的问题是我无法真正测试事物,因为 Linux 集成正在为我做其他事情)。