如何分发使用 Microsoft Access 数据库的应用程序

How to distribute an application that uses Microsoft Access database

我已经使用 Microsoft Access 作为数据库创建了一个应用程序。

分发时出现错误:

"ACE.OLEDB.12.0" provider is not registered on the local machine"

搜索后,我找到了安装两者的标准修复程序

2007 Office System Driver: Data Connectivity ComponentsMicrosoft Access Database Engine 2010 Redistribute

安装修复程序时,错误更改为无法识别的数据库。 我发现另一个修复程序说使用 Jet 4 作为数据连接,当我创建一个快速应用程序(作为测试)时它给出了同样的错误。

那么有没有人知道创建使用更易于分发的数据库的应用程序的方法。

Microsoft Access 数据库引擎 2010 (ACE) 有两个版本。 32 位和 64 位。您不能在同一台机器上安装两个版本。 32 位版本可以安装在 64 位 OS 的 PC 上。 Office 64/32 以相同的位数安装 ACE。

这是您可以在客户机器上找到的场景。 现在您的应用程序应该适应这种情况并使用允许您匹配大多数客户的 TargetCPU 属性(我假设您不能告诉您的用户卸载其 Office 副本到适应您的应用要求)

如果您的客户安装了 64 位 OS 和 Office 64 位,那么您只有一种解决方案。使用不带 Prefer 32bitTargetCPU = AnyCPU 或纯 x64 应用程序创建 64 位应用程序。任何其他选项都会失败。

相反,如果您的客户没有安装 Office 或 32 位版本(无论 OS 位数如何),那么您可以使用 TargetCPU=x86AnyCPU with Prefer 32bit 选项针对其环境构建您的应用程序.当然如果没有安装Office那么你需要分发32位版本的ACE。

要考虑的其他数据库选项是 SQLite, MS Sql Server Compact Edition or SQL Server LocalDB 选项。在任何情况下,您都需要分发适当的库以允许您的应用程序使用这些数据库系统。
为了更好地与已编写的代码兼容,您可能应该选择一种 Microsoft 解决方案,但如果应用程序不大(就数据访问而言),那么您可以自信地探索 SQLite 路径。