11.1 ADO.NET基础
ADO.NET在.NET Framework中提供最直接的数据访问方法。ADO.NET是一组向.NET Framework程序员公开数据访问服务的类,它为创建分布式数据共享应用程序提供了一组丰富的组件。它提供了对关系数据、XML和应用程序数据的访问,是.NET Framework中不可缺少的一部分。
ADO.NET类位于System.Data.dll中,并与System.Xml.dll中的XML类集成。
ADO.NET向编写托管代码的开发人员提供类似于ActiveX数据对象(ADO)向本机组件对象模型(COM)开发人员提供的功能。
11.1.1 ADO.NET结构
ADO.NET的结构如图11-1所示,ADO.NET的组件结构主要有两个:一是NET Framework数据提供程序;另一个是DataSet,利用它们可以轻松访问和操作数据库。
图11-1 ADO.NET的组件结构
(1).NET Framework数据提供程序。
.NET Framework数据提供程序是为数据操作及快速、只进、只读访问数据而设计的组件。
(2)DataSet。
DataSet可以独立于任何数据源的数据访问而设计的。因此,它可以用于多种不同的数据源,用于XML数据,或用于管理应用程序本地的数据。DataSet包含一个或多个DataTable对象的集合,这些对象由数据行和数据列及有关DataTable对象中数据的主键、外键、约束和关系信息组成。使用DataSet可执行下列操作。
从XML Web services对数据进行远程处理。
与数据进行动态交互,如绑定到Windows窗体控件或组合并关联来自多个源的数据。
对数据执行大量的处理,而不需要与数据源保持打开的连接,从而将该连接释放给其他客户端使用。
在应用程序中将数据缓存在本地,以便可以对数据进行处理。如果只需要读取查询结果,DataReader是更好的选择。
11.1.2 ADO.NET数据提供者
ADO.NET数据提供对象主要有以下几类:SQL数据提供者、OLE DB数据提供者和ODBC数据提供者、Oracle的数据提供者及EntityClient提供者。
(1)SqlClient。
SqlClient是轻量级且性能良好,因为它进行了优化,可直接访问SQL Server,而无需添加OLE DB或开放式数据库连接(ODBC)层。
(2)OLE DB。
OLE DB通过COM互操作使用本机OLE DB来启用数据访问。用于OLE DB的.NET Framework数据提供程序支持本地事务和分布式事务。
(3)ODBC。
ODBC使用本机ODBC驱动程序管理器(DM)来启用数据访问。ODBC数据提供程序支持本地事务和分布式事务两者。
(4)OracleClient。
用于Oracle的.NET Framework数据提者通过Oracle客户端连接软件启用对Oracle数据源的数据访问。
(5)EntityClient。
EntityClient提供者可用来基于实体数据模型(EDM)访问数据。与其他.NET Framework数据提供程序不同,该提供程序不直接与数据源进行交互,而是使用实体SQL与基础数据提供程序进行通信。
另外,.NET Framework数据提供程序有四个核心对象,如表11-1所示。
表11-1 .NET Framework数据提供程序的四个核心对象
这四个对象的分工如下:Connection对象主要负责数据源的连接;Command对象访问用于返回数据、修改数据、运行存储过程及发送或检索参数信息的数据库命令;DataReader可从数据源提供高性能的数据流。最后,DataAdapter在DataSet对象和数据源之间起桥梁作用。DataAdapter使用Command对象在数据源中执行SQL命令以向DataSet中加载数据,并将对DataSet中数据的更改协调回数据源。