无法使用 .Net 客户端访问嵌入式 Firebird 数据库服务器
我的目标是开发一个使用嵌入式 Firebird 服务器但在尝试使用 .Net 客户端建立连接时遇到错误的程序。我已按照多个线程的建议使其工作,但我无法弄清楚。我尝试更改连接字符串和文件,但不断收到相同的错误。
以下是对我的研究以及迄今为止我所尝试的一切的详细解释:
如何使用 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 属性:
FbConnection con = new FbConnection("User=SYSDBA;Password=masterkey;Database=TEST.FDB;Dialect=3;Charset=UTF8;ServerType=1;");
System.NotSupportedException Message=指定的服务器类型不正确。
FbConnection con = new FbConnection("User=SYSDBA;Password=masterkey;Database=TEST.FDB;Dialect=3;Charset=UTF8;");
System.ArgumentException Message=提供了无效的连接字符串参数或未提供所需的连接字符串参数。
@Toastgeraet 的最后一个答案是将 fbembed.dll 重命名为 fbclient.dll 或 gds32.dll。三种方法都试过了,没变。事实上http://www.firebirdsql.org/en/firebird-net-provider-faq/说 fbembded.dll 但这也不起作用。
使用firebird嵌入式数据库时如何解决c#中的连接错误?
对将 fbembed.dll 重命名为 fbclient.dll 有相同的建议,这对原始海报也不起作用。连接字符串中接受的答案 ServerType=1,但@cincura.net 答案下的评论给了我一个新的调查可能性;处理器架构。不幸的是,在 64bt 和 32bit 版本之间切换没有任何区别。
我认为切换到 32 位版本可能是答案,因为我使用的是 Visual Studios Express。
-
该线程中的最后一条评论是另一个人说更改为 32 位也没有解决问题。
尝试使用 firebird 嵌入式服务器 - 指定的服务器类型不正确
我回去查找有关 ServerType 的信息,因为我将其视为 1 和 0 并找到了这篇文章。@Nigel 的答案是更新到 .Net 提供程序的最新版本。不幸的是,我无法弄清楚如何在 Firebird 网站 (4.5.1.0) 上使用最新版本,因为它缺少示例中的 FirebirdSql 命名空间。此外,Visual Studios 会在我导入错误版本的 .Net 时给我一些警告。
我究竟做错了什么?我是否需要使用不同的连接字符串或新版本的 Firebird/.Net 提供程序?我还缺少其他东西吗?
我意识到这个问题可能被认为是重复的,但到目前为止我找到的答案都没有解决我的问题。此外,我上面引用的以前的 StackOverflow Q/A 都已有多年历史了,所以我希望有人可以分享新的信息。