Microsoft.Jet.OleDb和Microsoft.Ace.OleDb之间的区别

时间:2013-01-18 15:07:02

标签: ms-access ms-office ms-access-2010

自从我使用经典ASP和Microsoft Access进行一些编程以来,我们使用“Microsoft.Jet.Oledb”驱动程序来访问和显示数据已经很多年了。

我被要求使用“Microsoft.Ace.Oledb”访问MS Excel数据。我发现这是“Microsoft Access 2010引擎可再发行组件”下载的一部分。

我想知道“Microsoft.Jet.OleDb”是否已取代“Microsoft.Ace.Oledb”驱动程序并且基本相同或者它们是完全不同的东西?

此外,购买MS Access 2010时,您通常会获得“Microsoft.Ace.Oledb”驱动程序吗?

2 个答案:

答案 0 :(得分:71)

这主要是历史问题,实际上ACE取代了JET:

Wikipedia answers your question非常详细。

最相关的部分是:

  

在2007版本之后,Access包含特定于Office的版本   Jet,最初称为Office Access Connectivity Engine(ACE),   但现在称为Access数据库引擎。这个引擎是   完全向后兼容以前版本的Jet引擎,所以   它从早期的Access版本读取和写入(.mdb)文件。它   引入了一个新的默认文件格式(.accdb),它带来了几个   Access的改进,包括复杂的数据类型,如   多值字段,附件数据类型和历史跟踪   备忘录字段。它还带来了安全性和加密改进   支持与Microsoft Windows SharePoint Services 3.0和   Microsoft Office Outlook 2007

此外,ACE提供了64位驱动程序,因此可以在64位计算机上使用,而JET则不能。

  

驱动程序不是Windows操作系统的一部分,但是   可作为可再分发的。[11]以前是Jet数据库引擎   只有32位,并没有在64位版本下本机运行   视窗。

至于问题的第二部分,我最近安装了Office 2010,我必须单独下载ACE组件。我从链接Microsoft Access Database Engine 2010 Redistributable获得了它们。这可能是因为我在64位Windows下安装了32位版本的Office;无论如何,很容易从Microsoft获得必要的文件。

答案 1 :(得分:6)

当用于基本操作时,驱动程序基本相同,并且与更复杂的东西(联合,嵌套查询等)显示出明显的差异。

根据个人经验,ACE不提供完全向后兼容的结果。它可能会打开并读取/写入以前的.mdb格式,但数据类型会对完全相同的查询进行更改。

例如,在TEXT字段上使用UNION时,JET用于返回TEXT(255)结果,ACE返回MEMO?!

与BI或报表工具(如Crystal Reports)结合使用会产生很多麻烦。