ADO.NET(ActiveX Data Objects)

ADO.NET概述

ADO.NET是与C#和.NET Framework一起使用的类集的名称,用于关系型的、面向表的格式访问数据。
ADO.NET包括所有的System.Data命名空间及其嵌套的命名空间,如:System.Data.SqlClient,System.Data.OleDb,及System.Xml空间中的一些与数据访问相关的专用类。

ADO.NET 的设计目标

1、简单的访问关系数据
ADO.NET的主要目标是提供对关系数据的简单访问功能。引入了DataSet类,来自封装在一个单元中的关联表中的一组数据,并维持他们之间完整的关系。

2、可扩展性
ADO.NET可以扩展---它为插件.NET数据提供者提供了框架,这些提供者可以用于从任何数据源读写数据。ADO.NET提供了几种内置的.NET数据提供者,用于SQL,Oracle,OBDC(微软开发数据库链接API),OLEDB(微软基于COM的数据链接和嵌入数据库的API)。

3、支持多层应用程序
ADO.NET 用于多层应用程序。电子商务应用程序最常见的体系结构。在多层体系结构中,应用逻辑的不同部分运行在不同的层上,只与其上或其下的层通信。
最常见的模型是三层模型:
数据层:包含数据库和数据访问代码。
中间层:包含业务逻辑,定义应用程序的独特功能。
显示层:提供用户界面,控制应用程序的流程,对用户输入进行验证等。

4、统一XML和关系数据访问
ADO.NET另一个重要的目标是沟通行、列和XML文档中的关系数据,其中XML文档具有分层的数据结构。.NET技术是以XML为基础构建的,ADO.NET可以扩展的用法。


ADO.NET类和对象概述

    可以把类分为.NET数据提供者对象和用户对象。
 提供者对象专用于每一种类型(SQL,Oracle,XML,Access)的数据源;专用于提供者的对象完成数据源中实际的读取和写入工作。
 用户对象是将数据读入到内存中后用来访问和操作数据的对象。
    提供者对象需要一个活动的连接,可以使用它们先读取数据,然后根据需要,通过用户对像使用内存中的数据,也可以使用提供者对象更新数据源中的数据,并将变动写回到数据源中。用户对象以非连接方式使用;甚至在数据库连接关闭后,也可以使用内存的数据。

1、提供者对象

 即在每一个.NET数据提供者中定义的对象,其名称前带有特定提供者的名称。因此,用于OLEDB提供者的连接对象就是OleDbConnection;用于SQL Server .NET提供者的类就是SqlConnection。
    1.1 连接对象
    连接对象是我们使用的第一个对象,用于任何其他ADO.NET对象之前。它提供了到数据源的基本连接。若果使用的是需要用户名和密码的数据库,或者是位于远程网络服务上的数据库,则连接对象就可以提供建立连接并登陆的细节。
    1.2 命令对象
    可以使用此对象给数据源发出命令,比如“SELECT * FROM Customers”查询Customers表中的数据。对于不同的提供者,该对象的名称是用于SQL Server的SqlCommand,用于ODBC的ObdcCommand和用于OLE DB的OleDbCommand。
    1.3 CommandBuilder对象
    此对象用于构建SQL命令,在基于单一表查询的对象中进行数据修改。对于不同的提供者,该对象的名称是用于SQL SERVER的SqlCOmmandBuilder,用于ODBC的OdbcCommandBuilder和用于OLE DB的OleDbCommandBuilder。
    1.4 DataReader对象
    这是一个快速而易用的对象,可以从数据源中读取仅能向前和只读的数据流(比如找到的用户集合)。对于简单地读取数据来说,此对象的性能最好。对于不同的提供者,该对象的名称是用于SQL SERVER的SqlDataReader,用于ODBC的OdbcDataReader和OLE DB的OleDbDataReader。
    1.5 DataAdapter对象
    是一个通用的类,可以执行针对数据源的各种操作,包括更新变动的数据,填充DataSet对象以及其他操作,对于不同的提供者,该对象的名称是用于SQL SERVER 的SqlDataReader,用于ODBC的OdbcDataReader和用于OLEDB的OleDbDataAdapter。


2、用户对象

    用于定义 ADO.NET 的断开的、客户端的对象,它们与.NET数据提供者无关,存在于 System.Data 命名空间中。
    2.1 DataSet 对象
    DataSet是用户对象中的首要对象,此对象表示一组相关表,在应用程序中这些表作为一个单元来引用。例如,Customers、Orders和Products 是一个 DataSet 中的表,它们表示每一位顾客和他们从公司中订购的产品。有了此对象,就可以快速从每一个表中获取所需要的数据,当与服务器断开时检查并修改数据,然后在另一个操作中使用这些修改的数据更新服务器。
    DataSet 允许访问低级对象,这些对象代表单独的表和关系。这些对象是 DataTable 对象和 DataRelation 对象
    2.2 DataTable 对象
    此对象代表 DataSet 中的一个表。例如,Customers、Orders 或 Products。DataTable 对象允许访问其中的行和列:
 DataColumn 对象:代表表中的一列,比如 OrderID或 CustomerName。
 DataRow 对象:代表来自的关联数据的一行;例如某位客户的 CustomerID、姓名和地址等。
    2.3 DataRelation 对象
    此对象代表通过共享列而发生关系的两个表之间的关系;例如 Orders 表中的 CustomerID 列标识发出订单的客户。于是,可以创建DataRelation 对象,通过共享列 CustomerID建立 Customers 和 Orders 表之间的关系。

3、使用 System.Data 命名空间
   在C#代码中使用ADO.NET 的第一步是引用 System.Data 命名空间,其中含有所有的ADO.NET 类。
   using System.Data;
   接着需要为所使用的特定数据源引用 .NET数据提供者。
    SQL Server .NET 数据提供者
   using System.Data.SqlClient;
    Oracle .NET 数据提供者
   using System.Data.OracleClient;
    OLE DB .NET 提供者
   using System.Data.OleDb;
    ODBC .NET 数据提供者
   using System.Data.Obdc;
    其他内置的(第三方)数据提供者

3、使用DataReader 读取数据

   从程序提取数据的5步骤:
    连接数据源(创建连接对象)
    打开连接
    发出一个SQL查询命令
    使用DataReader读取或显示数据
    关闭DataReader和连接

 本例使用 DataReader 从Northwind 表中提取 CustomerID 和 CompanyName列

 

Code
posted @ 2008-10-14 11:18  wencx  阅读(266)  评论(0编辑  收藏  举报