2

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

当我分发它时,我收到一个错误:

“ACE.OLEDB.12.0”提供程序未在本地计算机上注册”

搜索后,我找到了一个标准修复程序

2007 Office System 驱动程序:数据连接组件Microsoft Access 数据库引擎 2010 重新分发

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

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

4

1 回答 1

4

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

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

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

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

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

于 2015-02-25T08:32:31.640 回答