摘要:本文讨论了ADO .NET完成基本数据库操作的方式,及当使用ADO .NET时与ADO 的对比。
ADO .NET是数据库访问技术(开始于几年前的开放数据库连接,即ODBC,应用程序编程接口API)的最新版本。在数据库访问技术的发展过程中,出现过许多有趣的事情。如,COM出现在数据库领域,开始了它的殖民过程,并由OLE DB达到了顶点,接着,ActiveX?数据对象(ADO)--可粗略地说是OLE DB的一个自动化版本--开始由Visual Basic?和ASP团队--基于Windows?的数据库开发者广泛使用。
微软为.NET提供了一个通用框架--框架类库,此类库可以覆盖已有的所有Windows API,而且更多。特别地,它将包含许多经常由独立COM对象使用的库。在这些类库中,你将找到XML和ADO对象模型,它们已经集成到了ADO .NET类中的一个子类中。
ADO .NET将证明是位于底层,它组成了对数据敏感的.NET应用程序的基础。与ADO 不同,ADO .NET被设计成更通用的指导方针,而较少地面向数据库。ADO .NET集合了所有用于数据处理的类。这些类代表了数据容器对象,它们以典型的数据库功能为特色,如索引,排序和浏览,而ADO .NET是.NET数据库应用程序最终的解决方案,它以整体设计为特色,而不是以数据库为核心的ADO模型。
ADO .NET完全不同于ADO。它是一个新的数据访问编程模型,需要全面理解、执行和不同的思想习惯。然而,一旦开始使用ADO .NET,你将发现你所掌握的任何ADO技巧能极大地帮助你以一种不同的但更加文雅、更加一致的方式构建高效的应用程序和解决旧问题。
在本文的其余部分,我将讨论ADO .NET执行基本数据库操作的方式。我将澄清ADO .NET是比ADO 更好的一个选择,特别是当你热衷于使用ADO时。ADO .NET并不是ADO对.NET基本架构的适应,当你从语法,代码设计和移植方面考虑ADO .NET时,它变得更明显。
.NET之后的数据访问
在ADO .NET中对数据源的访问由管理提供者掌管。从功能上讲,管理提供者与OLE DB提供者非常相似,但有两个重要不同。首先,它工作在.NET环境中,通过.NET类,如DataReader 和 DataTable,获得和暴露数据。第二,它们的结构更简单,因为它为.NET进行了优化。
目前,ADO .NET存在于两种类型的管理提供者中:一个供SQL Server? 7.0或更高版本使用,另一个供安装的所有其它OLE DB提供者使用。在两种情况下使用的类是不同的,但遵循相似的命名规则。除了前缀外,名字是相同的。第一种情况的前缀是SQL,后者的前缀是ADO。
你应当使用SQL类访问SQL Server表,因为它们直接访问数据库服务器的内部API,而跳过了由OLE DB提供者表示的中间层。ADO类是在OLE DB提供者之上的.NET接口,它们使用COM桥执行操作。
对ADO .NET对象的初步知识,参见Gazitt的文章--ADO+简介:用于微软.NET框架的数据访问服务,或我的文章--ADO+支配数据类型的进化。前者更具有技术性,对ADO .NET编程模型提供了高层次的注释性概述。后者的目的是解释ADO .NET的动机,及它与XML,脚本和其它技术的关系。