日期:2010-08-20  浏览次数:20370 次

    在商业应用程序中最重要的组件是数据,无论是在线的商务应用程序、公司的企业软件还是小型公司的会计应用程序无不如此:通过一个通用的线程与数据打交道,即都必须实现快速、有效、可靠的方式存储、检索和处理数据。
  
  然而,一直一来令人棘手的问题是这些数据文件常以不同的格式存储,这就需要开发者学会用多种不同的方式来处理完全一样的事情。Microsoft等诸多数据提供者力求实现数据访问格式的标准化。
  
  从Odbc的出现到Dao、Rdo、Oledb、Ado的实现,可以说标准化的进程逐步实现。特别是Ado的出现很好的实现了通用数据访问的模式,致使很多人认为,每隔两年学习一种新的数据访问对象模型的年代已经过去了。但是通过Internet,我们发现这种想法是错误的。
  
  一、ADO.NET 的设计目标
  
  随着应用程序开发的发展演变,新的应用程序已基于 Web 应用程序模型越来越松散地耦合。如今,越来越多的应用程序使用 XML 来编码要通过网络连接传递的数据。Web 应用程序将 HTTP 用作在层间进行通信的结构,因此它们必须显式处理请求之间的状态维护。这一新模型大大不同于连接、紧耦合的编程风格,此风格曾是客户端/服务器时代的标志。在此编程风格中,连接会在程序的整个生存期中保持打开,而不需要对状态进行特殊处理。
  
  设计 ADO.NET 的目的是为了满足这一新编程模型的以下要求:具有断开式数据结构;能够与 XML 紧密集成;具有能够组合来自多个、不同数据源的数据的通用数据表示形式;在创建 ADO.NET 时,Microsoft 具有以下设计目标。
  
  利用当前的 ADO 知识
  
  ADO.NET 的设计满足了当今应用程序开发模型的多种要求。同时,该编程模型尽可能地与 ADO 保持一致,这使当今的 ADO 开发人员不必从头开始学习全新的数据访问技术。ADO.NET 是 .NET Framework 的固有部分,因此对于 ADO 程序员决不是完全陌生的。
  
  ADO.NET 与 ADO 共存。虽然大多数基于 .NET 的新应用程序将使用 ADO.NET 来编写,但 .NET 程序员仍然可以通过 .NET COM 互操作性服务来使用 ADO。
  
  支持 N 层编程模式
  ADO.NET 为断开式 n 层编程环境提供了一流的支持,许多新的应用程序都是为该环境编写的。使用断开式数据集这一概念已成为编程模型中的焦点。n 层编程的 ADO.NET 解决方案就是 DataSet。
  
  集成 XML 支持
  XML 和数据访问是紧密联系在一起的,即 XML 的全部内容都是有关数据编码的,而数据访问越来越多的内容都与 XML 有关。.NET Framework 不仅支持 Web 标准,它还是完全基于 Web 标准生成的。
  
  XML 支持内置在 ADO.NET 中非常基本的级别上。.NET Framework 和 ADO.NET 中的 XML 类是同一结构的一部分,它们在许多不同的级别集成。您不必在数据访问服务集和它们的 XML 相应服务之间进行选择;它们的设计本来就具有从其中一个跨越到另一个的功能。

   二、ADO.NET 的组件
  
  设计 ADO.NET 组件的目的是为了从数据操作中分解出数据访问。ADO.NET 的两个核心组件会完成此任务:DataSet 和 .NET Framework 数据提供程序,后者是一组包括 Connection、Command、DataReader 和 DataAdapter 对象在内的组件。
  
  ADO.NET DataSet 是 ADO.NET 的断开式结构的核心组件。DataSet 的设计目的很明确:为了实现独立于任何数据源的数据访问。因此,它可以用于多种不同的数据源,用于 XML 数据,或用于管理应用程序本地的数据。DataSet 包含一个或多个 DataTable 对象的集合,这些对象由数据行和数据列以及主键、外键、约束和有关 DataTable 对象中数据的关系信息组成。
  
  ADO.NET 结构的另一个核心元素是 .NET Framework 数据提供程序,其组件的设计目的相当明确:为了实现数据操作和对数据的快速、只进、只读访问。Connection 对象提供与数据源的连接。Command 对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。DataReader 从数据源中提供高性能的数据流。最后,DataAdapter 提供连接 DataSet 对象和数据源的桥梁。DataAdapter 使用 Command 对象在数据源中执行 SQL 命令,以便将数据加载到 DataSet 中,并使对 DataSet 中数据的更改与数据源保持一致。
  
  可以为任何数据源编写 .NET Framework 数据提供程序。.NET Framework 提供了四个 .NET Framework 数据提供程序:SQL Server .NET Framework 数据提供程序、OLE DB .NET Framework 数据提供程序、ODBC .NET Framework 数据提供程序和 Oracle .NET Framework 数据提供程序。
  
  下图阐释了 ADO.NET 结构的组件。
  
  三、使用 ADO.NET 连接到数据源
  在 ADO.NET 中,可以使用 Connection 对象来连接到指定的数据源。若要连接到 Microsoft SQL Server 7.0 版或更高版本,请使用 SQL Server .NET Framework 数据提供程序的 SqlConnection 对象。若要使用用于 SQL Server 的 OLE DB 提供程序 (SQLOLEDB) 连接到 OLE DB 数据源或者连接到 Microsoft SQL Server 6.x 版或较早版本,请使用 OLE DB .NET Framework 数据提供程序的 OleDbConnection 对象。若要连接到 ODBC 数据源,请使用 ODBC .NET Framework 数据提供程序的 OdbcConnection 对象。若要连接到 Oracle 数据源,请使用 Oracle .NET Framework 数据提供程序的 OracleConnection 对象。
  
  1、 使用 ADO.NET 连接到 SQL Server
  SQL Server .NET Framework 数据提供程序使用 SqlConnection 对象提供与 Microsoft SQL Server 7.0 版或更高版本的连接。
  
  SQL Server .NET Framework 数据提供程序支持类似于 OLE DB (ADO) 连接字符串格式的连接字符串格式。有关有效的字符串格式名称和值,请参见附表1
  
  以下代码示例演示如何创建和打开与 SQL Server(版本 7.0 或更高版本)数据库的连接。
  
  [Visual Basic]
  Dim myConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind")
  myConn.Open()
  [C#]
  SqlConnection nwindConn = new SqlConnection("Data Sourc