Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试连接到Visual Studio中的Firebird时出现访问被拒绝错误_C#_Database_Visual Studio_Firebird - Fatal编程技术网

C# 尝试连接到Visual Studio中的Firebird时出现访问被拒绝错误

C# 尝试连接到Visual Studio中的Firebird时出现访问被拒绝错误,c#,database,visual-studio,firebird,C#,Database,Visual Studio,Firebird,最近,在VisualStudio中,我发现Firebird是一个数据提供者 我正在做的这个项目,我正试图让Firebird的嵌入式版本在我的c#程序中使用 但是,当我转到工具/连接到数据库时 选择firebird数据源,然后输入以下内容 数据源:Firebird数据源(.net framework Firebird数据提供程序) 数据源:为空 数据源端口:3050 方言:3 字符集:无 数据库:我的fdb文件的路径 服务器类型:嵌入式 用户:用户名I设置 密码:密码I设置 角色:为空 当我单击T

最近,在VisualStudio中,我发现Firebird是一个数据提供者

我正在做的这个项目,我正试图让Firebird的嵌入式版本在我的c#程序中使用

但是,当我转到工具/连接到数据库时 选择firebird数据源,然后输入以下内容

数据源:Firebird数据源(.net framework Firebird数据提供程序) 数据源:为空 数据源端口:3050 方言:3 字符集:无 数据库:我的fdb文件的路径 服务器类型:嵌入式 用户:用户名I设置 密码:密码I设置 角色:为空

当我单击TestConnection时,它会立即弹出拒绝访问的消息

有没有关于这可能是什么原因的想法?

谢谢您的帮助。

我猜您正在尝试使用FBConnection组件进行连接,连接提示如下所示

在这种情况下,您称之为“数据源”并告诉我们为空的应该指向嵌入式数据库的localhost。查看我提供的链接以了解更多信息

如果您未使用FbConnection,请提供有关连接组件和连接字符串的更多信息

编辑

阅读您在评论中添加的信息,您似乎正在尝试使用ADO.NET建立与Firebird的连接(由于我没有在此计算机上安装Visual Studio,因此无法对其进行测试),这与我之前的假设一致

配置到Firebird数据库的连接时,您正在构造连接字符串,连接组件使用该字符串了解如何连接到数据库(请注意,配置连接时,这也适用于其他几个数据库)

您可以找到有关连接字符串和Firebird的详细信息

据我所知,Firebird可以通过两种方式从.NET访问:

  • 使用ADO.NET:在这种情况下,需要将数据源设置为localhost。我想这是你的情况

  • 通过.NET使用ODBC:在这种情况下,连接看起来非常不同。你可以查看我提供的链接,但我怀疑这是否适用于你的情况

所以,简而言之,请尝试将“数据源”设置为localhost


HTH

数据库的嵌入式版本以独占模式(DenyRead、DenyWrite)打开数据库文件,服务器版本也会这样做

这是出于设计考虑,两个不同的数据库进程之间没有协调的方式来允许在并发环境中打开该文件并成功执行读/写操作。如果希望允许不同进程访问数据库,则必须连接到Firebird产品的服务器版本

对于您的开发环境也是如此。如果使用embedded将IDE连接到数据库,然后使用Alway embedded执行应用程序,应用程序将收到拒绝访问错误,因为文件将由IDE打开。您可能知道,IDE和您的应用程序实际上是不同的进程

其他可能的情况是,当您从FlameRobin或任何其他工具(使用服务器版本或嵌入式版本)使用此数据库时,然后尝试使用嵌入式版本从IDE打开连接

因此,在开发环境中使用嵌入式版本是一个坏主意

我要做的是始终使用本地服务器。通过这种方式,我可以将IDE数据库工具连接到数据库(很少,但有时我会这样做),任何其他工具,如isql、IBExpert、FlameRobin,我都可以维护项目中的开放连接,并运行测试/调试,而不会出现问题

然后,如果应用程序将在生产环境中使用嵌入式版本,我会在测试/Q&A阶段切换到该版本,当然,在生产环境中也会切换到该版本

我没有使用Visual Studio或.NET中的Firebird,因此我不确定
服务器类型:Embedded
参数的含义,也不确定驱动程序如何在服务器和嵌入式之间进行选择,但不管它是什么,您只需在发布版本中更改它,而在调试版本中使用服务器


现在,我必须承认,我在回答的开头,事实上,使用classic server,有几个进程(每个连接的客户端一个)访问数据库。我不确定他们如何在不同的进程之间共享对该文件的访问权限(可能有一个读写器进程,我不知道,现在我真的不在乎),这是另一个故事,不会改变我之前所说的。

你能用isql或你喜欢的工具连接到同一个服务器和数据库吗?是的。使用MS SQL CE,应用程序仍然可以正常运行,因为在我转到Firebird之前,我仍在开发该应用程序。您没有回答我的问题,请仔细阅读;)很抱歉。我的错。是的,我能。我使用flamerobin创建了数据库并生成了一些测试表和视图,它可以正常工作。我还手动生成了一个连接字符串,通过代码创建了一个FBCONNECTION和命令,它也是这样工作的。你能最终让它与@jachguate和/或我的答案一起工作吗?谢谢你的回复。我应该尽可能多提供一些信息。我有一个数据库在WindowsSQLCE在我的项目目前,但它没有做所有需要的,所以我试图使移动到Firebird。在Windows SQL CE中,我通过dataset designer设置了一个dataset,在这里我拉入了我的表,创建了关系,等等。我想通过Firebird做同样的事情,并尝试将Firebird设置为一个数据源,以允许我使用相同的功能。这就是我在尝试设置连接时出错的地方。字符数有限。这是我的人生之路