繁体   English   中英

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

[英]Using Microsoft Access 2007 database with Visual C# 2010

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

using System.Data.OleDb;

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

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

正确使用的选项取决于应用程序中定义的目标CPU以及操作系统的位数。 当然,在32位操作系统上,您不能安装64位提供程序,但可以相反。

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

如果这还不足以使您头痛,那么如果客户端计算机上已经安装了Office,则情况看起来会很糟糕。

Office将自动安装与其版本(32或64位)兼容的提供程序,并且您不能与其他库并排安装这些库的其他版本。

那么,您最好的选择是什么?

  • 编写用于x86 Target CPU应用程序,并为安装了Office 64位的系统提供专门的设置,或者要求您的客户更改Office版本。 (我在开玩笑)
  • AnyCPU Target编写应用程序,在安装时检查OS位,然后选择引擎的适当版本。 在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解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM