Visual Studio 2008之ADO.NET数据访问技术

Visual Studio 2008ADO.NET数据访问技术

.NET使用的数据库访问技术是ADO.NET。在讲述ADO.NET之前,先简要介绍一下在ADO.NET出现之前广泛使用的ADO数据访问技术。将ADO.NETADO进行对比有助于深入地理解和掌握ADO.NET

为了给应用程序提供一个统一的与数据库进行连接通信的接口,在20世纪90年代初,Microsoft开发了ODBC技术,ODBCOpen DataBase Connectivity Interface(开放式数据库连接接口)的简称,它提供了SQL语言和数据库进行通信的一般标准。

ADO.NETMicrosoft ActiveX Data Objects (ADO)改进而来,是一种先进的数据库访问技术,提供平台互用和可收缩的数据访问功能。.NET使用XML(Extensible Markup Language,可扩展标记语言)作为数据传送的格式,任何可以读取XML格式的应用程序都可以对数据进行处理。实际上,接收组件根本不需要ADO.NET组件。它可以是基于Microsoft Visual Studio的解决方案或在任何平台上运行的任何应用程序。

ADOADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用、高速度、低内存支出和占用磁盘空间较少,支持用于建立基于客户端/服务器和Web的应用程序的主要功能。但是ADO使用OLE DB接口并基于MicrosoftCOM技术,而ADO.NET拥有自己的ADO.NET接口并且基于Microsoft.NET体系架构。.NET体系不同于COM体系,ADO.NET接口也就完全不同于ADOOLE DB接口,这也就是说ADO.NETADO是两种数据访问方式。ADO.NET.NET构架提供了优化的数据访问模型,和基于COMADO是完全两样的数据访问方式。

ADORecordset存储,而ADO.NET则以DataSet表示。Recordset看起来更像单表,如果让Recordset以多表的方式表示就必须在SQL中进行多表连接。反之,DataSet可以是多个表的集合。ADO 的运作是一种在线方式,这意味着不论是浏览或更新数据都必须是实时的。ADO.NET则使用离线方式,在访问数据的时候ADO.NET会利用XML制作数据的一份幅本,ADO.NET的数据库连接也只有在这段时间需要在线

由于ADO使用COM技术,这就要求所使用的数据类型必须符合COM规范,而ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导致的数据类型转换,从而提高了整体性能。ADO模型和ADO.NET模型的示意图分别由下图所示。

可以看到,ADO.NET模型中的两个核心组件是.NET Data Provider(数据提供程序)DataSet Object(数据集对象).NET Data Provider是数据库的访问接口,负责建立到数据库的连接和数据操作,它作为DataSet Object与数据源之间的桥梁,负责将数据源中的数据取出后置入DataSet Object中,或将数据存回数据源。DataSetADO.NET的断开式结构的核心组件。它可以用于多种不同的数据源,用于XML数据,或用于管理应用程序本地的数据。DataSet包含一个或多个DataTable对象的集合,这些对象由数据行和数据列以及主键、外键、约束和有关DataTable对象中数据的关系信息组成。

.NET Framework提供了四个.NET Framework数据提供程序:

1) SQL Server .NET Framework 数据提供程序。适用于 Microsoft SQL Server 7.0版或更高版本。

2) OLE DB .NET Framework 数据提供程序。适用于所有提供了OLE DB接口的数据源,包括Access, SQL Server 6.5或更低版本的数据库等。

 

ODBC .NET Framework 数据提供程序。适合于所有提供了ODBC接口的数据源。

SQL Server .NET Framework数据提供程序使用它自身的协议(Tabular Data StreamTDS)SQL Server直接通信。由于它经过了优化,可以直接访问SQL Server而不用添加OLE DB或开放式数据库连接(ODBC)层,因此它是轻量的,并具有良好的性能。对比了SQL Server .NET Framework数据提供程序和OLE DB .NET Framework数据提供程序的异同。OLE DB .NET Framework数据提供程序通过OLE DB服务组件(它提供连接池和事务服务)和数据源的OLE DB提供程序才能与OLE DB数据源进行通信。因此,使用SQL Server .NET数据提供程序访问SQL Server数据库比使用OLE DB .NET数据提供程序效率更高。

n          4个核心对象的功能如下:

n          1) Connection:建立与特定数据源的连接

n          2) Command:对数据源执行数据库命令,用于返回数据、修改数据、运行存储过程以及发送或检索参数信息等。

n          3) DataReader:从数据源中读取只进且只读的数据流。

n          4) DataAdapter:执行SQL命令并用数据源填充DataSetDataAdapter提供连接DataSet对象和数据源的桥梁。DataAdapter使用Command对象在数据源中执行SQL命令,以便将数据加载到DataSet中,并使对DataSet中数据的更改与数据源保持一致。

n          ADO.NET的数据访问策略有两种,一是将数据记录缓存于数据集(Dataset)中,二是直接访问数据库并使用数据读取器(DataReader)来读取数据记录。那么,应用程序应使用Dataset还是DataReader呢?此时应考虑应用程序所需要的功能。

 

Dataset功能强大,用于执行以下功能:

1) 对数据执行大量的处理,而不需要与数据源保持打开的连接,从而可以将该连接释放给其他客户端使用。

2) 在应用程序本地缓存数据。

3) 与数据进行动态交互,例如绑定到Windows窗体控件或组合并关联来自多个源的数据。

4) 提供关系数据的分层XML视图,并使用XSL转换或XML路径语言(XPath)查询等工具来处理数据。

5) 在层间或从XML Web services对数据进行远程处理。

DataReader功能有限,只能以只进只读方式返回数据,但是这种方式节省了DataSet所使用的内存,并将省去创建DataSet并填充其内容所需的必要处理,因此提高了应用程序的性能。

 

ADO.NET数据库操作的基本步骤:

.NET数据库应用程序中操作数据库的方法可以有两种:一是通过直接编写程序代码进行数据库连接和数据库操作;二是使用VS.NET提供的数据控件,用可视化的方法帮助实现对数据库的操作。

 

使用ADO.NET的类来执行数据库操作,包括查询、添加、更新和删除数据等。ADO.NET访问数据库的一般步骤是:

1) 导入相应的命名空间。

2)建立与数据库的连接。可以使用SqlConnectionOleDbConnection对象等。

3) 执行SQL的命令,以实现对数据库的查询、插入、更新和删除等操作。这里要使用Command对象或DataAdapter对象执行SQLSelect, Insert, UpdateDelete等命令。

4) 或将从数据库取回的记录集合填入DataSet中。

5) 关闭到数据库的连接。

6) DataSet上作所需要的操作。

7) 如果有必要,将对数据库中的数据的修改结果写回数据库。

 

你可能感兴趣的:(Visual Studio 2008之ADO.NET数据访问技术)