在Visual C#2010中使用Microsoft Access 2007数据库

时间:2014-08-18 10:47:26

标签: c# ms-access-2007 oledb office-2007

我已经完成了设计我的C#应用​​程序,该应用程序将员工数据存储在Access数据库中。当我在我的机器上安装Microsoft Office 2007时,该程序工作正常,但如果我卸载Office 2007则会导致错误。现在,我想知道是否有一种方法可以使我的程序连接到Access数据库而无需安装整个Microsoft Office 2007

using System.Data.OleDb;

1 个答案:

答案 0 :(得分:2)

如果您的连接字符串使用Microsoft.ACE.OleDb.12.0提供程序,则需要在客户端上安装Microsoft Access Database Engine

在提供的链接中,您可以找到此提供商的两个版本的安装 一个用于32位,一个用于64位。

使用正确的方法取决于应用中定义的目标CPU 和操作系统位数。当然,在32位操作系统上,您无法安装64位提供程序,反之亦然。

如果你的应用程序是针对x86编译为目标CPU,那么你需要32位版本,你也可以在64位系统上安装你的应用程序。如果您的应用程序是针对x64目标CPU编译的,那么您需要64位版本,并且您只能在64位系统上运行。如果您的应用程序是为Any CPU编译的,那么您应该在安装时决定安装哪个版本的ACE.OleDb.12.0,具体取决于操作系统的位数。

如果这还不足以让您头疼,那么如果客户端计算机上已经安装了Office,事情就会变得非常糟糕。

Office会自动安装与其版本(32位或64位)兼容的提供程序,并且您无法与另一个版本并排安装这些库的不同版本。

那么你最好的选择是什么?

  • x86 Target CPU编写您的应用,并为其提供专门的设置 安装Office 64位的系统或要求您的客户更改Office版本。 (我在开玩笑)
  • AnyCPU Target编写应用程序,在安装时检查操作系统位数并选择适当的引擎版本。在64位系统上,希望您的客户没有 安装了32位版本的Office。
  • 使用Access 2003 format (mdb)并编译x86目标CPU。这个 方法需要Microsoft.Jet.OleDb.4.0提供者 已经可以在任何目标客户端上使用。它不需要安装 什么,它应该在任何系统上完美无瑕。
  • 切换为SQLiteSql Server Compact EditionSql Server LocalDB。这些选项需要完整的重新测试 应用程序,数据库模式迁移以及代码更改。仍然,专注 库需要分发

个人对于小型单用户应用程序,数据量有限(小于1GB)并与其他Office应用程序集成,我使用Access 2003 MDB解决方案。