`
zy77612
  • 浏览: 283487 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ADO.NET 结构

    博客分类:
  • .net
 
阅读更多

以前,数据处理主要依赖于基于连接的双层模型。当数据处理越来越多地使用多层结构时,程序员正在向断开方式转换,以便为他们的应用程序提供更佳的可缩放性。

ADO.NET 组件

可以使用 ADO.NET 的两个组件来访问和处理数据:

  • .NET Framework 数据提供程序

  • DataSet

.NET Framework 数据提供程序

.NET Framework 数据提供程序是专门为数据处理以及快速地只进、只读访问数据而设计的组件。Connection 对象提供与数据源的连接。Command 对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。DataReader 从数据源中提供高性能的数据流。最后,DataAdapter 提供连接 DataSet 对象和数据源的桥梁。DataAdapter 使用 Command 对象在数据源中执行 SQL 命令,以便将数据加载到 DataSet 中,并使对 DataSet 中数据的更改与数据源保持一致。

DataSet

ADO.NET DataSet 专门为独立于任何数据源的数据访问而设计。因此,它可以用于多种不同的数据源,用于 XML 数据,或用于管理应用程序本地的数据。DataSet 包含一个或多个 DataTable 对象的集合,这些对象由数据行和数据列以及有关 DataTable 对象中数据的主键、外键、约束和关系信息组成。

下图说明 .NET Framework 数据提供程序与 DataSet 之间的关系。

 

ADO.NET 结构



 

选择 DataReader 或 DataSet

在决定应用程序应使用 DataReader(请参见使用 DataReader 检索数据)还是应使用 DataSet(请参见在 ADO.NET 中使用 DataSet)时,应考虑应用程序所需的功能类型。DataSet 用于执行以下功能:

  • 在应用程序中将数据缓存在本地,以便可以对数据进行处理。如果只需要读取查询结果,DataReader 是更好的选择。

  • 在层间或从 XML Web 服务对数据进行远程处理。

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

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

如果不需要 DataSet 所提供的功能,则可以使用 DataReader 以只进、只读方式返回数据,从而提高应用程序的性能。虽然 DataAdapter 使用 DataReader 来填充 DataSet 的内容(请参见从 DataAdapter 填充 DataSet),但可以使用 DataReader 来提高性能,因为这样可以节省 DataSet 所使用的内存,并将省去创建 DataSet 并填充其内容所需的处理。

XML 和 ADO.NET

ADO.NET 利用 XML 的力量来提供对数据的断开式访问。ADO.NET 的设计与 .NET Framework 中 XML 类的设计是并进的,它们都是同一个结构的组件。

ADO.NET 和 .NET Framework 中的 XML 类集中于 DataSet 对象。无论 XML 源是文件还是 XML 流,都可以用来填充 DataSet。无论 DataSet 中数据的数据源是什么,DataSet 都可以作为符合万维网联合会 (W3C) 标准的 XML 进行编写,并且将其架构包含为 XML 架构定义语言 (XSD) 架构。由于 DataSet 固有的序列化格式为 XML,因此是在层间移动数据出色的媒介,这使 DataSet 成为在远程向 XML Web 服务发送数据和架构上下文以及从 XML Web 服务接收数据和架构上下文的最佳选择。

 

下文转自:http://blog.csdn.net/yhmhappy2006/article/details/3414633

.net(ADO.NET)数据库研究(1):部分主要类及类关系探秘

 

部分主要类及类图介绍

1DbConnection 抽象类

 

功能

表示到数据库的连接。

命名空间

System.Data.Common

程序集

System.Data(在 System.Data.dll 中)

继承层次结构

System..::.Object

  System..::.MarshalByRefObject

    System.ComponentModel..::.Component

      System.Data.Common..::.DbConnection

        System.Data.Odbc..::.OdbcConnection

        System.Data.OleDb..::.OleDbConnection

        System.Data.OracleClient..::.OracleConnection

        System.Data.SqlClient..::.SqlConnection

参考

http://msdn.microsoft.com/zh-cn/vcsharp/system.data.common.dbconnection.aspx

 

 

1 DbConnection类图继承关系

 

2DbCommand 抽象类

 

功能

表示要对数据源执行的 SQL 语句或存储过程。为表示命令的、数据库特有的类提供一个基类。

命名空间

System.Data.Common

程序集

System.Data(在 System.Data.dll 中)

继承层次结构

System..::.Object

  System..::.MarshalByRefObject

    System.ComponentModel..::.Component

      System.Data.Common..::.DbCommand

        System.Data.Odbc..::.OdbcCommand

        System.Data.OleDb..::.OleDbCommand

        System.Data.OracleClient..::.OracleCommand

        System.Data.SqlClient..::.SqlCommand

参考

http://msdn.microsoft.com/zh-cn/vcsharp/system.data.common.dbcommand.aspx

 

 

2 DbCommand类图继承关系

3: DbDataReader 抽象类

功能

从数据源读取行的一个只进流。

命名空间

System.Data.Common

程序集

System.Data(在 System.Data.dll 中)

继承层次结构

System..::.Object

  System..::.MarshalByRefObject

    System.Data.Common..::.DbDataReader

      System.Data..::.DataTableReader

      System.Data.Odbc..::.OdbcDataReader

      System.Data.OleDb..::.OleDbDataReader

      System.Data.OracleClient..::.OracleDataReader

      System.Data.SqlClient..::.SqlDataReader

参考

http://msdn.microsoft.com/zh-cn/vcsharp/system.data.common.dbdatareader.aspx

 

 

3 DbDataReader类图继承关系

4: DbDataAdapter 抽象类

功能

帮助实现 IDbDataAdapter 接口。DbDataAdapter 的继承者实现一组函数以提供强类型,但是继承了完全实现 DataAdapter 所需的大部分功能。表示用于填充 DataSet 和更新数据库的一组数据命令和一个数据库连接。

命名空间

System.Data.Common

程序集

System.Data(在 System.Data.dll 中)

继承层次结构

System.Object

   System.MarshalByRefObject

     System.ComponentModel.Component

       System.Data.Common.DataAdapter

        System.Data.Common.DbDataAdapter

           System.Data.Odbc.OdbcDataAdapter

           System.Data.OleDb.OleDbDataAdapter

           System.Data.OracleClient.OracleDataAdapter

           System.Data.SqlClient.SqlDataAdapter

           System.Data.SqlServerCe.SqlCeDataAdapter

参考

http://msdn.microsoft.com/zh-cn/library/system.data.common.dbdataadapter(VS.80).aspx

 

 

4  DbDataAdapter类图继承关系

 

5: DbCommandBuilder 抽象类

功能

自动生成用于协调 DataSet 的更改与关联数据库的单表命令。提供 DbCommandBuilder 类是为了方便提供程序编写者创建自己的命令生成器。通过继承此类,开发人员可在自己的代码中实现提供程序特定的行为。

命名空间

System.Data.Common

程序集

System.Data(在 System.Data.dll 中)

继承层次结构

System..::.Object

  System..::.MarshalByRefObject

    System.ComponentModel..::.Component

      System.Data.Common..::.DbCommandBuilder

        System.Data.Odbc..::.OdbcCommandBuilder

        System.Data.OleDb..::.OleDbCommandBuilder

        System.Data.OracleClient..::.OracleCommandBuilder

        System.Data.SqlClient..::.SqlCommandBuilder

参考

http://msdn.microsoft.com/zh-cn/library/system.data.common.dbcommandbuilder.aspx

 

 

5 DbCommandBuilder类图继承关系

 

6: DbParameter 抽象类

功能

表示 DbCommand 的参数,还可表示该参数到一个 DataSet 列的映射。

命名空间

System.Data.Common

程序集

System.Data(在 System.Data.dll 中)

继承层次结构

System..::.Object

  System..::.MarshalByRefObject

    System.Data.Common..::.DbParameter

      System.Data.Odbc..::.OdbcParameter

      System.Data.OleDb..::.OleDbParameter

      System.Data.OracleClient..::.OracleParameter

      System.Data.SqlClient..::.SqlParameter

参考

http://msdn.microsoft.com/zh-cn/library/system.data.common.dbparameter.aspx

 

 

6 DbParameter类图继承关系

 

下文转自:http://www.cnblogs.com/zxlin25/archive/2009/11/10/1599852.html

DataTable、DataView、DataSet 区别

一、DataTable

      DataTable表示内存中数据的一个表,它完全是在内存中的一个独立存在,包含了这张表的全部信息。DataTable可以是从通过连接从数据库中读取出来形成的一个表,一旦将内容读到DataTable中,此DataTable就可以跟数据源断开而独立存在;也可以是完全由程序自己通过代码来建立的一个表。

◆ DataColumn

一个表是由行和列组成的一个两维的结构。表的结构是由DataColumn 对象的集合组成,DataColumn 对象集合可由DataTable.Columns 属性中能获取到,通过定义每一列的数据类型来确定表的架构,类似数据库中定义表。定义完表的结构就可以根据结构来生成DataRow,用DataTable.NewRow()方法来生成此DataTable结构的新行。
一个DataTable是由DataRow的集合组成的, DataRow的集合这个可以由DataTable.Rows 属性来访问。

DataTable还可以通过现有的列用Expression 属性的表达式创建一些列。

1、创建计算出的列
比如:已经有了一个表结构,表中有一个DataColumn的集合,其中有一个叫UnitPrice的列,你可以新建一个DataColumn,设置好ColumnName,再设置此列的表达式,DataColumn.Expression = "UnitPrice * 0.086",这个列的值就是名字为UnitPrice的列计算出来的,在创建表达式时,使用 ColumnName 属性来引用列。

2、第二个用途是创建聚合列
聚合列聚合通常沿着关系执行(有关关系的描述见下面DataRelation部分),如果order表有名为 detail 的子表,两个表之间通过order.orderid和detail.orderid两个列建立一个关系 DataRelation 对象名为“order2detail”,在主表order中就可以建立一个聚合列,将计算每个order在detail表中含有的所有item的价格的和:DataColumn.Expression = “sum(child(order2detail).price)",child(order2detail)表示通过关系order2detail联系到的子表,child(order2detail).price就表示子表的price列。

 

◆ DataRow

DataRow对象没有直接在代码中使用的构造函数,一般是从具有一定结构的DataTable用NewRow()方法来新建一个DataRow对象。一个DataRow根据其是独立的,还是属于某个DataTable,是否修改过,是否被DataTable删除等等不同的情况有不同的状态,由 DataRow.RowState属性公开,如下表:

成员名称

说明

Added
该行已添加到 DataRowCollection 中,AcceptChanges 尚未调用。Deleted 该行已通过 DataRow 的 Delete 方法被删除。

Deleted
该行已通过 DataRow 的 Delete 方法被删除。

Detached
该行已被创建,但不属于任何 DataRowCollection。DataRow 在以下情况下立即处于此状态:创建之后添加到集合中之前;或从集合中移除之后。

Modified
该行已被修改,AcceptChanges 尚未调用。

Unchanged
该行自上次调用 AcceptChanges 以来尚未更改。

一个DataRow对象刚被创建之后其状态是Detached,是孤立的一个存在,所以建立了DataRow之后在DataRow中的单元填充了数据后还要通过DataTable.Rows.Add(DataRow)方法将此DataRow添加到DataTable,DataRow添加到 DataTable后, 这个DataRow的状态就转变为Added。当修改了这个DataRow后,这个DataRow状态转为Modified,当用 DataRow.Delete()方法删除DataRow后,DataRow状态将转为Deleted,不过此行还存在在DataTable中的,只是状态改变了,这时用DataTable.Rows.Count查看行数,跟删除前是一样的。只有在调用了 DataTable.Remove(DataRow)方法后,此DataRow才被从DataTable移除,状态也回复到Detached孤立状态。

一旦调用了DataTable.AcceptChanges()方法后,所有的行将根据不同的状态做不同的处理,Added、Modified、 Unchanged将保留当前值,Deleted的行将从DataTable中移除,最后所有的行的状态都置为Unchanged。当DataTable 是从DataAdapter.Fill(DataSet,DataTable)方法填充而形成的,Fill()方法将自动调用 AcceptChanges()方法,将DataTable的行状态都置为Unchanged。并且,如果Fill方法中指定的那个DataTable在要填充的那个DataSet不存在时,会生成一个跟数据源表同样的结构的DataTable并填充数据。

 

◆ DataRelation

表示两个 DataTable 对象之间的父/子关系。可以类比于数据库中的表之间的关系,父表相当于关系列为主键的表,子表相当于关系列为外键的表。DataRelation 构造函数一般为:DataRelation(String, DataColumn, DataColumn) ,string为关系名,第一个DataColumn为建立关系的父表列,第二个DataColumn为建立关系的子表列,建立关系的两个列的 DataType 值必须相同。

建立好了关系,必须把这个关系加入到DataTable的ParentRelations属性或ChildRelations 属性,这两个属性包含这个表的所有的跟父表的关系和跟子表的关系。若关系中此表是父表则将此关系加入到ChildRelations集合中,否则加入到ParentRelations集合中。

 

二、DataView

DataView表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图。可以将DataView同数据库的视图类比,不过有点不同,数据库的视图可以跨表建立视图,DataView则只能对某一个DataTable建立视图。DataView一般通过DataTable.DefaultView 属性来建立,再通过通过RowFilter 属性和RowStateFilter 属性建立这个DataTable的一个子集。

RowFilter属性用来筛选要查看DataTable中哪些行的表达式,这个表达式同上面所说的建立计算列的表达式相同。例如:"LastName = 'Smith'",这就是只查看列LastName的值为'Smith'的那些数据行。

RowStateFilter 属性用来设置 DataView 中的行状态筛选器,上面介绍DataRow时介绍了DataRow的状态,一个DataRow可能有五种状态,RowStateFilter就是可以通过这些状态来筛选要查看的行集。其实DataRow不仅有五种状态,DataRow还有版本的问题,比如当DataRow的状态为Modified,即这行已经被修改了,这时这个DataRow就会有两个版本,Current版本和Original版本(修改前的)。实际上RowStateFilter属性是综合了DataRow的状态和版本来筛选的(RowStateFilter确省值是CurrentRows)见下表:

成员名称

说明

Added
一个新行。

CurrentRows
包括未更改行、新行和已修改行的当前行。

Deleted
已删除的行。

ModifiedCurrent
当前版本,原始数据(请参阅 ModifiedOriginal)的修改版本。

ModifiedOriginal
原始版本(尽管它后来已被修改并以 ModifiedCurrent 形式存在)。

None
无。

OriginalRows
包括未更改行和已删除行的原始行。

Unchanged
未更改的行。

 

DataView.Count属性得到的计数是在应用了 RowFilter 和 RowStateFilter 之后,获取 DataView 中记录的数量。

DataView是建立在DataTable基础上的,DataView.Table 属性可以得到此DataView对应的那个DataTable。DataView的行叫DataRowView,可以从DataRowView直接通过DataRowView.Row 属性得到此DataRowView对应的DataRow。

 

三、GridView

这里说的GridView是winform中的GridView,一般都是跟DataView绑定来显示DataTable中的数据,和修改DataTable中的数据。

GridView通过DataSource 和 DataMember 属性来绑定其要显示的数据源。数据源一般是DataTable、DataView、DataSet等,不过将这些数据源绑定到GridView时实际上是绑定的DataView。若数据源是DataTable时,实际上是绑定了此DataTable的DefaultView,若数据源是DataSet时,则可以向 DataMember 属性设置一个字符串,该字符串指定要绑定到的表,然后再将DataMember指定的那个DataTable的DefaultView绑定到 GridView。

所以GridView实际显示的是DataTable经过筛选的DataView

 

 

 

  • 大小: 18.1 KB
分享到:
评论

相关推荐

    Ado.net结构图

    Ado.net结构图 做设计时用的到 我找了很久才找到

    ADO.NET结构

    ### ADO.NET结构详解 #### 一、概述 ADO.NET是一种用于访问数据库和其他数据源的.NET数据提供程序。它的设计允许高性能的数据访问,并且能够独立于底层数据存储系统。ADO.NET支持多种数据源,包括SQL Server、...

    ADO.Net结构及常用方法

    ### ADO.NET结构及常用方法 #### 一、概述 ADO.NET(ActiveX Data Objects .NET)是微软为.NET框架设计的数据访问技术,用于在Windows平台上实现与数据源的交互。与之前的ADO相比,ADO.NET提供了更为高效和灵活的...

    ADO及ADO.NET结构图

    ADO(ActiveX Data Objects)和ADO.NET是微软提供的两种数据访问技术,用于在应用程序和数据库之间建立连接,处理数据。这两个技术虽然都是用于数据访问,但它们分别属于不同的开发时代和框架。 **ADO(ActiveX ...

    学生管理系统+ADO.NET+SQL2005

    《基于ADO.NET与SQL2005的学生管理系统详解》 在信息技术日新月异的今天,学生管理系统已经成为教育机构日常管理的重要工具。本系统利用ADO.NET技术和SQL Server 2005数据库,实现了对学生的全面信息化管理,为教育...

    ADO.NET 全面解析ADO.NET

    ADO.NET是Microsoft开发的一种用于访问关系数据库的数据访问技术,它为.NET Framework应用程序提供了一套全面的数据访问组件。本文将深入探讨ADO.NET的核心概念、对象模型和数据操作。 首先,我们来看ADO.NET的设计...

    ADO.NET核心技术(我看过最好的ADO。NET书)

    ### ADO.NET核心技术详解 #### 一、ADO.NET概述 ADO.NET是一组包含在.NET框架中的库,专门用于在.NET应用程序的各种数据存储之间进行通信。它不仅能够作为一个强大的、层次化的数据缓存来使用,还支持离线处理数据...

    ADO.NET结构PPT

    ADO.NET的体系结构主要包括以下组件: 1. **SqlConnection**: 这是.NET Framework提供的连接数据库的对象,负责建立与数据库之间的连接。它包含了打开、关闭连接以及执行SQL命令等相关操作。 2. **SqlCommand**: ...

    ADO.NET管理数据库

    7. **熟悉ADO.NET结构及包含的命名空间** - ADO.NET的主要命名空间包括`System.Data.SqlClient`(针对SQL Server)、`System.Data.OleDb`等。 - 每个命名空间下包含了用于连接、命令执行、数据填充等操作的相关类...

    ACCP5.0 ADO.NET酒店管理系统(三层架构)

    《ACCP5.0 ADO.NET酒店管理系统:深入解析三层架构》 在IT行业中,开发高效、稳定的管理系统是企业运营的重要支撑。ACCP5.0 ADO.NET酒店管理系统以其先进的三层架构,为酒店行业的信息化管理提供了强大的解决方案。...

    ADO.NET本质论.pdf

    讲解了数据结构,演示了如何用ado.net来解决具体的数据访问问题。重点讨论了ado.net如何有效地平衡"功能的泛化"和"执行效率",以及它如何解决对扩展性、并发性和可靠性的要求。针对其他数据访问api(包括ole db,ado...

    ADO.NET官方参考文档2021-09.pdf

    ADO.NET 是 .NET Framework 中用于访问关系数据库的关键组件,它提供了与各种数据源(如 SQL Server、Oracle 等)交互的灵活性。在2021-09版的官方参考文档中,主要关注了DataSet、DataTable、DataView这三个核心类...

    ADO.NET数据库访问技术案例教程

    ADO.NET是微软.NET框架下的一种数据访问技术,用于与各种关系型数据库进行交互。它提供了一组组件和服务,使得开发者可以高效、灵活地存取和处理数据。在本"ADO.NET数据库访问技术案例教程"中,我们将深入探讨ADO...

    ADO.net大数据量操作数据库实验

    本实验“ADO.NET大数据量操作数据库实验”聚焦于如何高效地在SQL Server中存储和处理大量数据。实验环境基于Visual Studio 2015(VS2015)和SQL Server 2008,采用多种方法来演示批量数据插入,包括常规方法、Bulk ...

    ADO.NET本质论

    讲解了数据结构,演示了如何用ADO.NET来解决具体的数据访问问题。重点讨论了ADO.NET如何有效地平衡"功能的泛化"和"执行效率",以及它如何解决对扩展性、并发性和可靠性的要求。针对其他数据访问API(包括OLE DB,ADO...

    PPT ADO.NET课件

    ADO.NET是微软.NET框架中用于访问数据库的核心组件,它提供了一组全面的接口和服务,使得开发者可以高效地处理数据。本课件将深入探讨ADO.NET的相关知识点,包括但不限于以下内容: 1. 数据访问架构:ADO.NET采用...

    XML和ADO.NET

    XML是一种用于存储和传输结构化数据的开放标准,而ADO.NET是Microsoft .NET Framework的一部分,用于处理数据库和其他数据源。 XML的主要特点包括其自描述性、平台独立性和语言无关性。它的结构化特性使得数据可以...

    ADO.NET技术内幕rar

    ADO.NET是微软.NET框架中一个重要的数据访问技术,主要用于与数据库进行交互。它提供了一组全面的组件和服务,使得开发者可以高效地构建数据驱动的应用程序。本书《ADO.NET技术内幕》深入探讨了这一核心技术,通过六...

    一个ADO.NET数据库操作实例

    `ADO.NET综合实例数据字典.rtf`可能是一份数据字典文档,列出了数据库表的结构、字段信息和相关约束。数据字典是数据库设计的重要组成部分,它帮助开发者理解数据库的逻辑结构,以便正确地编写SQL查询和操作数据。 ...

Global site tag (gtag.js) - Google Analytics