![]() |
1
15
[据记录,曾经是“jet”的官方名称现在是“access数据库引擎”。] 对于ace(access2007引擎.accdb格式)功能,它必须是acedao。 对于Jet4.0功能,它必须是ADO Classic。 对于Jet3.51和更早版本的功能,选择ADO或DAO。两者都有优缺点。绝大多数的Access数据库引擎功能对两者都是通用的;互斥功能可以说是边缘功能。也许是一种生活方式的选择,但没什么大不了的。智能编码器使用两者的最佳方法:) 我已经用了不少,ADO是我个人的偏好。它比DAO更现代,所以从架构上来说,它是一种改进:更平坦的对象模型,没有DAO的崩溃问题等。更多的属性和方法以及引入事件(DAO没有),例如异步连接和获取记录。ADO记录集可以断开连接、分层和生成,DAO记录集不能。基本上,他们把刀的好东西拿出来做得更好。 道不是没有优点的。首先,对于access/jet,您将发现比ADO更多的DAO代码示例。 另外,由于某种原因,喜欢刀的人真的不喜欢ADO。忽视宣传。ADO不受欢迎。ace有一个ole db提供程序,目前是64位使用ace的唯一方法。与vb.net在Access项目中取代vba6相比,ado.net不再取代ado classic。
编辑:为了澄清,“对于Jet4.0的特性,它必须是ADO经典的,”这是因为DAO 3.6对于Jet4.0的新特性只接受了一些增强。例如,对于
(提示:具有表级数据完整性约束的可压缩固定宽度文本列。)不,不能。
afaik对ace dao的唯一增强是针对新的ace功能,即它们没有返回并填补dao中的jet 4.0空白。为什么要这样?我们还有很多事情要做。最好是让团队更有效地利用他们的时间,比如解决那些烦人的问题。
|
![]() |
2
8
DAO是这里推荐的技术。ADO已经大幅贬值,现在正被ADO.NET所取代。 DAO不仅是用于MS Access的本机和推荐的数据对象模型,它还在不断增强,现在有了一系列新的SharePoint功能。在Access 2007中,我们现在支持SharePoint列表。这意味着2007年的新DAO对象模型允许将SharePoint列表用作SQL Server表并进行查看。这意味着您可以在SharePoint列表上使用SQL(在fac中,甚至没有一个OLEDB提供程序允许您以这种方式使用SharePoint列表,但对于DAO,您现在可以这样做)。没有任何此类添加到ADO中。因此,从访问(DAO)的角度来看,SharePoint列表将这些SharePoint列表视为标准表。 此外,Access中的DAO还支持我们所称的复杂数据类型。这样做是为了支持来自SharePoint的XML列表。请记住,在下一个版本的Access(2010)中,我们将看到更多的新特性添加到DAO中(jet现在称为ace)。 因此,毫无疑问,DAO是正确和良好的模型。ADO没有收到任何增强,已被ADO.NET取代。 因此,未来属于DAO,很明显,微软在MS访问和升级SharePoint工作访问方面投入了大量资金。 Access2007的字段定义具有多值功能,这也是支持SharePoint的增强的结果。但是,这些功能是Jet的一部分,这些增强功能可以在没有SharePoint的情况下使用。他们现在是道的一部分。 编辑: 也许我要在这方面做一点扩展,并试图澄清我们在这里有哪些相反的答案,我可以向您保证,在使用Access 2007时,您使用DAO的情况要好得多。 产生混淆的地方是,如果您在选择使用默认数据对象模型访问2007时查看工具引用,这里的问题是它不再称为DAO。现在它被称为ace。 当您在Access 2007中使用DAO时,您会在工具引用中注意到,该引用未设置为DAO 3.6(该版本已贬值,现在也不再是MDAC下载的一部分)。您会注意到,在MS Access中使用DAO时,新的引用被称为: Microsoft Office 12.0 Access数据库引擎对象库 现在,上面的内容有点满嘴,但当您要使用DAO代替ADO时,上面的内容对于参考访问2007是正确的。 换言之,也许我们应该称之为道二。 换句话说,这个数据引擎将继续得到增强,并且最有把握看到的是用于Office2010(Office14)的64位版本的这个引擎。 因此,问题或困惑集中在,当我们在Access2007中提到使用DAO时,将使用什么术语。这里的混乱事实上是文档甚至工具引用都没有将其称为DAO。 在Access2007的最后一天,如果您计划使用DAO,那么这意味着您设置了上述引用,而不设置对DAO 3.6的引用。无论如何,现在开始使用ADO是毫无意义的,因为它已经贬值了,而且新的用于访问的DAO对象模型继续得到微软的增强和投资。 我希望这有助于消除这里的混乱。虽然DAO/Jet IT_s正在贬值,但新版本的Access 2007基于相同的代码库,只是它继续得到增强。因此,可以考虑并称为新的DAO对象模型。 在这个问题上,我目前正处于保密协议之下,但我可以肯定地告诉您,对于下一个版本的Office(2010),我们将再次看到一系列的增强。 因此,访问开发人员几乎一致认为,在开发访问应用程序和使用本机数据引擎时,这里的首选是使用DAO对象模型(但请记住,我们不再称之为ACE)。 |
![]() |
3
3
这个问题的答案取决于你在做什么。如果使用Access来处理ADO接口更通用的格式的数据,那么使用ADO。如果您使用的是Jet数据,或者使用Jet数据库引擎与另一个数据库引擎(通过ODBC)协同工作,那么DAO是正确的选择。 但这个答案假设您是从Access工作的。如果您在其他编程环境中工作,答案可能会完全不同。 |
![]() |
4
2
这取决于你的需要。预计这两种工具都不会很快消失。 如果你没有ADO或DAO方面的经验,你会发现DAO要容易得多。所以,除非你需要ADO,否则使用DAO。 您添加了此关键项:“我正试图将数据从外部源拉入到访问数据库中。”此连接可能需要ADO。 |
![]() |
5
2
ADO是当前推荐的访问方法。我认为道已经被弃用了很多年。 看起来是从2000年开始的-根据 this link , 过时的数据访问技术列表- http://msdn.microsoft.com/en-us/library/ms810810.aspx#mdac 旧技术路线图 引用上述文章,该文章于2008年12月修订-“数据访问对象(DAO):DAO提供对Jet(Access)数据库的访问。这个API可以从微软Visual Basic、微软Visual C++和脚本语言中使用。它包含在Microsoft Office 2000和Office XP中。DAO 3.6是该技术的最终版本。它在64位Windows操作系统上不可用。“ |
![]() |
6
1
与ADO相比,DAO在性能方面表现出色。没有比较。 |
![]() |
7
0
很抱歉,这是一个答案,当它应该是一个评论(我没有代表),但我想澄清一个错误的说法,即DAO/Acedao不支持Jet4.0记录锁定。确实如此,这就是违约行为,不管某些MS文章声称什么。 问题是,在使用DAO编辑/更新时,这可能会导致巨大的膨胀(非常零碎的DB文件),并且您不能在DAO/ACEDAO中关闭它。 如果确实存在此问题,可以通过使用正确的jet-oledb:数据库锁定模式设置(允许将数据库设置为页级锁定)通过OLEDB连接首先打开数据库将其关闭。此属性随后将受到后续连接(DAO或其他)的尊重,因此您可以使用DAO进行快速更新等。 这样,与执行SQL语句相比,DAO可以恢复到通常的8x性能。 以下是几个指向此问题的链接: Does ACEDAO support row level locking? http://www.access-programmers.co.uk/forums/showthread.php?t=47040 MS知识库文章,包括用ADO设置锁定模式,然后在数据库上使用DAO的代码。- http://support.microsoft.com/?id=306435 |
![]() |
Boltie · 开关参数数量不正确-看不到位置 7 年前 |
![]() |
Trilochan Sahu · 子句之间的MS访问不工作 8 年前 |
|
AJK · 编译错误:应为Case 9 年前 |
![]() |
Tom · 显示一个表中的所有记录,如果它们在另一个表上有记录 9 年前 |
|
Rynoc · 确定当月是否已对装运进行计费 9 年前 |