Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 什么是';本地';在两种相关技术的背景下是什么意思?_Language Agnostic_Ms Access_Native_Dao_Jet - Fatal编程技术网

Language agnostic 什么是';本地';在两种相关技术的背景下是什么意思?

Language agnostic 什么是';本地';在两种相关技术的背景下是什么意思?,language-agnostic,ms-access,native,dao,jet,Language Agnostic,Ms Access,Native,Dao,Jet,所讨论的情况与备受诽谤的事件有关。断言是(DAO)数据访问技术是Jet的“本机”,这意味着通过DAO模型创建对象比通过从用户界面内部执行的SQL代码创建对象“更优越” 此外,有人断言,如果您不能通过DAO创建某些东西,那么根据定义,它不是Jet的“本机” 对我来说,“本地人”的这个定义似乎是错误的。由于历史和微软的政治原因,许多Jet对象在DAO中被省略或仅部分实现(CHECK约束、固定宽度数据类型、十进制数据类型、可压缩数据类型等),但被包含在Jet的SQL(DDL)中。直觉告诉我Jet SQ

所讨论的情况与备受诽谤的事件有关。断言是(DAO)数据访问技术是Jet的“本机”,这意味着通过DAO模型创建对象比通过从用户界面内部执行的SQL代码创建对象“更优越”

此外,有人断言,如果您不能通过DAO创建某些东西,那么根据定义,它不是Jet的“本机”

对我来说,“本地人”的这个定义似乎是错误的。由于历史和微软的政治原因,许多Jet对象在DAO中被省略或仅部分实现(
CHECK
约束、固定宽度数据类型、十进制数据类型、可压缩数据类型等),但被包含在Jet的SQL(DDL)中。直觉告诉我Jet SQL DDL应该被认为是Jet引擎的“本机”


所以我的问题是:为什么一个看似外部的技术(DAO)会被认为是“本机的”,而另一个看似内部的技术(SQLDDL)会被认为是“非本机的”?我是否应该为某些东西是“本地的”还是其他的而烦恼呢?

也许我在这里错了,但我总是这样理解它:

  • MS Jet数据库引擎绝对是一个数据库引擎(动力不足与否)
  • 它与外部世界的“本机”接口是SQL方言
鉴于:

  • DAO是Microsoft的数据库抽象层之一,设计用于VBA或Windows脚本等COM环境
  • 它是使用Access开发的(可以将其视为MS Jet的用户界面/报告工具,因为MS Jet可以在没有MS Access的情况下存在),并且与MS Jet和MS Access紧密捆绑在一起,不过它与ADO属于同一类别

    • 也许我错了,但我总是这样理解:

      • MS Jet数据库引擎绝对是一个数据库引擎(动力不足与否)
      • 它与外部世界的“本机”接口是SQL方言
      鉴于:

      • DAO是Microsoft的数据库抽象层之一,设计用于VBA或Windows脚本等COM环境
      • 它是使用Access开发的(可以将其视为MS Jet的用户界面/报告工具,因为MS Jet可以在没有MS Access的情况下存在),并且与MS Jet和MS Access紧密捆绑在一起,不过它与ADO属于同一类别

        • 在我看来,这个问题并不是真的善意地发布的——它完全是针对我和我针对你的评论所做的评论。我已经回答了其他地方的所有问题,但为了澄清问题,让我概述一下喷气式飞机的历史

          喷气式飞机是在90年代初与Access一起引入的。在版本1和版本2之间,微软收购了Foxpro,并将其“Rushmore”技术融入Jet。在这个时间范围内的某个地方,MS开发了DAO作为Jet的接口层。事实上,我不知道DAO除了使用Jet进行所有数据访问的数据接口层之外是否还存在,但在我看来,它就是这样。Jet是一个不错的选择,因为使用ODBC和可安装的ISAM,它可以使任何当时常见的数据库格式在应用程序中的外观和行为与原生Jet数据的外观和行为相同。在那些日子里,桌面数据库市场由dBase及其变体和悖论主导。这些都是桌面数据库引擎,而不是服务器数据库。对服务器数据库的访问通常是通过ODBC进行的,但当时对桌面db应用程序开发人员来说并不那么重要。Jet管理得相当好,可以连接到ODBC数据源并非常有效地利用它们,尽管有时会出错(这就是为什么将ODBCDirect引入Jet,从而绕过Jet数据处理引擎的某些方面)

          现在,与Access/Jet/DAO的兴起并行,Visual Basic是通用Windows应用程序开发的热门产品,在Web繁荣之前,VB是世界上使用最广泛的编程语言。DAO和Jet为VB开发人员提供了各种数据存储的接口,VB开发工具与它们集成良好。因此,在ODBC之后,DAO成为MS的关键数据接口层,利用Jet引擎处理各种数据

          当然,这也有它的问题,而且非常有限,因为Jet/DAO(和VB)都是面向桌面的工具。到了90年代中后期,微软正试图从一家提供桌面软件、桌面操作系统和开发工具的供应商扩展到一家企业软件供应商。因此,MS需要开发更健壮的数据接口,比如数据库服务器的ODBC,但要具备新服务器数据库提供的所有现代功能。OLEDB就是答案,ADO是OLEDB之上的接口层(就像DAO是Jet之上的接口层一样)。虽然DAO的目标是通过Jet数据库引擎提供对大量数据存储的访问,但OLEDB是一个更中性的数据接口层,如ODBC,一个数据库抽象层,ADO是该中性数据接口层的接口

          关于“本机”DDL的问题,事实上,在JET4之前,对SQLDDL的支持非常差。也就是说,Jet的一些特性是无法通过SQLDDL控制的。相反,您必须使用DAO来控制这些特性。虽然Jet数据库引擎程序员的当然包括DDL示例和DAO示例,但DAO示例能够做得更多,因为Jet DDL SQL从未支持Jet数据库的所有功能

          看起来如此混乱的崩溃是由微软内部的政治因素造成的。到1999年,当微软推出Access2000(带有新版本的Jet 4.0)时,微软希望放弃DAO,转而支持它