Visual Studio - MS Access 工作数据库连接然后突然找不到提供者

Visual Studio - MS Access Working Database Connection then suddenly the provider is not found

我有一个已连接到 MS Access 数据库的代码。当我再次打开 Visual Studio 2019 时,在数据连接下,数据库文件有一个 x.当我尝试测试连接时,出现

错误
The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the machine. 

我已经在 x64 上安装了 'Microsoft Access database engine 2010 (English)',它在我第一次安装和我第一次尝试 运行ning 代码时就开始工作了。然后这发生了。我找不到问题所在。虽然当我 运行 代码时,即使数据库文件上有一个 x 和找不到提供者的错误,我的程序的登录仍然有效并确定现有帐户。

如果您将项目强制为 x64 位?

然后您可以使用连接生成器,但测试连接按钮将永远不起作用。事实上,测试连接按钮从来没有工作过,也从来没有为 x64 位访问工作过。

但是,当您 运行 您的代码时,连接应该并且将会工作。

所以:

Access x64 - must set project to x64 bits. 
Test connection NEVER works
You can use connection builder(s).

因此对于 x64 Access (ACE),您必须 运行 连接工作的项目 - 测试连接无法工作,因为 Visual Studio 是一个 x32 位程序 - 它无法连接到 x64 位驱动程序。但是 F5(调试)或 运行 将起作用,因为如果您将项目强制为 x64,则项目将启动并且 运行 作为 x64 位进程。

因此,测试连接从未对 x64 位访问起作用。您很可能 运行 您的项目 - 它有效。但随后尝试尝试测试连接 - 它永远不会工作。因此,与 ACE/access 建立的任何连接都必须在您 运行 项目时发生 - 在设计期间 - 测试连接构建器永远不会工作。

Access x32 - you should set/force the project to x86.
Test connection should work.
You can use the connection builders.

您可以使用“任何 cpu”,但这仅适用于 Visual Studio 是 x32 位应用程序这一事实。因此,当您按 f5 键进入 运行 时,您会得到一个 x32 位的“进程中”运行 应用程序实例。但是,我不推荐任何 cpu 用于 x32 访问。如果用户从 x64 位命令行启动该 .net exe 程序(很容易做到),那么您的任何 cpu 应用程序现在将 运行 作为 x64 位并且无法连接以访问 x32。

所以我强烈建议您将项目强制设置为正确的位大小,避免也不使用任何 cpu 进行项目设置。