通过 ADO.NET 访问数据
ADO.NET 概述
ADO.NET 的设计目标:讨论创建 ADO.NET 的动机和设计目标。
ADO.NET 结构:提供 ADO.NET 结构和组件的概述。
.NET 数据提供程序:提供有关随 ADO.NET 提供的 .NET 数据提供程序和 .NET 数据提供程序的设计的概述。
ADO.NET DataSet:提供有关 DataSet 设计和组件的概述。
为 .NET 数据提供程序编写通用代码:提供有关如何使用 ADO.NET 所提供的通用接口来编写一组对于任何 .NET 数据提供程序都将运行的代码的信息。
ADO.NET 示例应用程序:提供 ADO.NET 应用程序的示例,该示例从数据库中检索数据并将其返回到控制台。
使用 .NET 数据提供程序访问数据
使用 ADO.NET 连接到数据源:描述 ADO.NET Connection 对象,并说明如何使用它来连接到数据源。
执行命令:描述 ADO.NET Command 对象,并说明如何使用它来对数据源执行查询和命令。
使用 DataReader 检索数据:描述 ADO.NET DataReader 对象,并说明如何使用它从数据源返回结果流。
将存储过程用于命令:描述如何使用 Command 对象来调用存储过程,并提供有关发送和检索参数值的信息。
从数据库中获取单个值:描述如何使用 Command 从数据库查询中返回单个值。
从数据库中获取 BLOB 值:描述如何使用 DataReader 从数据库中返回二进制大对象 (BLOB)。
执行数据库操作和修改数据:描述如何使用 Command 对数据源发出 INSERT、UPDATE 和 DELETE 命令,以及如何执行目录操作(如创建或更改表)。
从 SQL Server 中以 XML 形式获取数据:描述如何使用 Command 以 XmlReader 形式返回 SQL Server FOR XML 查询的结果。
从 DataAdapter 填充 DataSet:描述如何通过 DataAdapter 来使用表、列和行填充 DataSet。
使用 DataAdapter 和 DataSet 更新数据库:描述如何使用 DataAdapter 将对 DataSet 中数据的更改解析回数据源。
向 DataSet 添加现有约束:描述如何从数据源填充 DataSet 的约束(如主键列的唯一约束)。
设置 DataTable 和 DataColumn 映射:描述如何使用表和列映射来提供从数据源中返回的列的应用程序特定名称。
将参数用于 DataAdapter:描述如何将参数用于 DataAdapter 的命令属性(包括如何将 DataSet 中列的内容映射到命令参数)。
输入和输出参数及返回值:描述如何将 DataSet 表中列的内容映射到 DataAdapter 命令属性的输入和输出参数(包括如何从存储过程中检索返回值)。
自动生成的命令:描述如何使用 CommandBuilder 为具有单个表 SELECT 命令的 DataAdapter 自动生成 INSERT、UPDATE 和 DELETE 命令。
使用 DataAdapter 事件:描述 DataAdapter 事件并说明如何使用这些事件。
从数据库中获取架构信息:解释如何从数据源中获取架构信息,如数据库或目录中表的列表。
执行事务:解释如何使用 Connection 和 Transaction 对象对数据源执行事务。
.NET 数据提供程序的代码访问安全性:描述随 .NET 框架提供的 .NET 数据提供程序的可用附加代码访问安全权限,并说明如何确定特定权限是否可用于所运行的代码。
创建和使用 DataSet
创建 DataSet:描述创建 DataSet 实例的语法。
向 DataSet 添加 DataTable:描述如何创建表和列并将其添加到 DataSet 中。
添加表间关系:描述如何创建 DataSet 中表之间的关系。
导航表间关系:描述如何使用 DataSet 中表之间的关系来返回具有父子关系的子行或父行。
将 DataSet 与现有数据一起使用"描述如何使用 DataAdapter 将 DataSet 中的更改解析回数据源。
合并 DataSet 内容:描述如何将一个 DataSet、DataTable 或 DataRow 数组的内容并入另一个 DataSet。
复制 DataSet 内容:描述如何创建可包含架构和指定数据的 DataSet 副本。
使用 DataSet 事件:描述 DataSet 的事件并说明如何使用这些事件。
使用类型化的 DataSet:描述类型化 DataSet 并说明如何创建和使用类型化 DataSet。
XML 和 DataSet:描述 DataSet 如何与作为数据源的 XML 进行交互(包括以 XML 数据的形式加载和保持 DataSet 的内容)。
DiffGram:提供有关 DiffGram 的详细信息,DiffGram 是一种用于读写 DataSet 内容的 XML 格式。
从 XML 中加载 DataSet:讨论在从 XML 文档中加载 DataSet 内容时需考虑的不同选项。
以 XML 数据形式编写 DataSet:讨论如何以 XML 数据的形式生成 DataSet 的内容以及可使用的不同 XML 格式选项。
从 XML 中加载 DataSet 架构信息:讨论用于从 XML 中加载 DataSet 架构的 DataSet 方法。
以 XML 架构 (XSD) 形式编写 DataSet 架构信息:讨论 XML 架构的用途以及如何从 DataSet 生成 XML 架构。
使 DataSet 与 XmlDataDocument 同步:讨论同步访问单个数据集的关系和分层视图的 .NET 框架中的可用功能,并解释如何在 DataSet 和 XmlDataDocument 之间创建同步关系。
嵌套的 DataRelation:讨论嵌套 DataRelation 对象在以 XML 数据形式表示 DataSet 内容时的重要性,并描述如何创建这些对象。
从 XML 架构 (XSD) 生成 DataSet 关系结构:描述从 XML 架构定义语言 (XSD) 架构创建的 DataSet 的关系结构(即架构)。
将 XML 架构 (XSD) 约束映射到 DataSet 约束:描述用于在 DataSet 中创建唯一和外键约束的 XML 架构元素。
从 XML 架构 (XSD) 生成 DataSet 关系:描述用于在 DataSet 中各表列间创建关系的 XML 架构元素。
了解约束和关系之间的相互关系:描述当使用 XML 架构元素在 DataSet 中创建约束时如何隐式地创建关系。
从 XML 推断 DataSet 关系结构:描述在从 XML 元素进行推断时所创建的 DataSet 的结果关系结构(即架构)。
创建和使用数据表:描述如何创建和自定义 DataTable 对象。
创建数据表:说明如何创建 DataTable 并将其添至 DataSet。
定义数据表的架构:提供有关创建和使用 DataColumn 对象和约束的信息。
在数据表中操作数据:说明如何添加、修改和删除表中的数据。说明如何使用 DataTable 事件来检查对表中数据的更改。
创建和使用 DataView:描述如何创建 DataTable 中数据的动态视图,这些视图通常用于数据绑定应用程序。
创建 DataView:描述如何为 DataTable 创建 DataView。
使用 DataView 对数据排序和筛选:描述如何设置 DataView 的属性,以按照特定筛选条件返回数据行的子集或以特定排序顺序返回数据。
使用 DataView 查看数据:描述如何访问 DataView 的内容,在 DataView 中查找特定的数据行,以及基于父子关系创建数据的视图。
使用 DataView 修改数据:描述如何通过 DataView 修改基础 DataTable 中的数据(包括启用或禁用更新)。
使用 DataView 事件:描述如何使用 ListChanged 事件接收在 DataView 的内容或顺序得到更新时发出的通知。
使用 DataViewManager 设置默认表视图:描述如何使用 DataViewManager 来管理 DataSet 中每个表的 DataView 设置。
从 ADO.NET 访问 ADO 记录集或记录:描述如何使用 OleDbDataAdapter 从 ADO 记录或记录集填充 DataSet。
ADO.NET 方案示例:提供数据识别应用程序的常见编程方案的示例,并使用 ADO.NET 提供这些方案的解决方案。
检索“标识”或“自动编号”值:提供一个特定示例,它将为 Microsoft SQL Server 表中的“标识”(Identity) 字段所生成的值以及 Microsoft Access 表中的“自动编号”(Autonumber) 字段映射到表中插入行的列。
开放式并发:描述开放式并发模型,并提供有关如何使用 ADO.NET 测试是否存在开放式并发冲突的示例。
从 XML Web services 使用 DataSet:提供一个 XML Web services 的示例,该示例以 DataSet 的形式返回数据源中的数据,另外还接收更新的 DataSet 并将更改解析回数据源。
查询结果分页:提供有关以数据页的形式查看查询结果的示例。
实现 .NET 数据提供程序:描述如何为数据存储区创建自定义 .NET 数据提供程序,并为您提供模板代码。
.NET 数据提供程序实现入门:为定义 .NET 数据提供程序提供信息和建议,其中包括有关可用于实现的接口的说明和有关为提供程序创建命名空间的信息。
实现连接:描述连接的特性,并说明如何为 .NET 数据提供程序实现您自己的连接。
实现命令:描述命令的特性,并说明如何为 .NET 数据提供程序实现您自己的命令。
实现 DataReader:描述 DataReader 的特性,并说明如何为 .NET 数据提供程序实现您自己的 DataReader。
实现 DataAdapter:描述 DataAdapter 的特性,并说明如何为 .NET 数据提供程序实现您自己的 DataAdapter。
示例 .NET 数据提供程序:包含 .NET 数据提供程序的示例实现。
数据集
数据集介绍:提供什么是 ADO.NET 数据集、如何对它们进行类型化或非类型化、它们的用途及结构的概述。
用于创建数据集的 Visual Studio 工具:描述 Visual Studio 提供了哪些允许创建数据集的功能,以及在何时选用什么样的工具。
用组件设计器创建类型化数据集:描述在窗体或组件中工作时如何创建数据集。
用表达式创建数据集列:描述如何在数据集表中定义基于计算或其他表达式(而不是直接基于数据源中的数据)的列。
将表添加到现有数据集:描述如何在以前创建的类型化数据集中创建新数据表。
将现有类型化数据集添加到窗体或组件:描述如何在窗体或组件上创建数据集的实例。
将非类型化数据集添加到窗体或组件:描述如何创建无关联架构的数据集。
演练:将数据源表映射到数据集表:描述如何基于另一个架构,使用数据适配器表和列映射从数据库将数据加载到数据集。
数据适配器
数据适配器介绍:提供有关数据适配器的定义、用途和结构的概述。
数据适配器命令中的参数:描述适配器在运行时传递给 SQL 语句或存储过程的参数的结构和用途。
数据适配器中的表映射:描述如何在源表和数据集表之间映射列名的选项。
创建数据适配器:列出在 Visual Studio 中创建数据适配器的各种方法。
为数据适配器配置参数:解释如何创建将在运行时传递给数据适配器命令的参数并设置其属性。
将数据源列映射到数据集数据表列:提供有关如何建立和修改源表和数据集表的列名之间映射的说明。
预览数据适配器的结果:提供有关测试数据适配器填充数据集的方式的说明。
数据连接
与 ADO 的早期版本和其他数据访问组件相比,ADO.NET 提供了若干好处。这些好处分成以下几个类别:
互操作性
ADO.NET 应用程序可以利用 XML 的灵活性和广泛接受性。由于 XML 是用于在网络中传输数据集的格式,因此可以读取 XML 格式的任何组件都可以处理数据。实际上,接收组件根本不必是 ADO.NET 组件:传输组件可以只是将数据集传输给其目标,而不考虑接收组件的实现方式。目标组件可以是 Visual Studio 应用程序或无论用什么工具实现的其他任何应用程序。唯一的要求是接收组件能够读取 XML。作为一项工业标准,XML 正是在谨记这种互操作性的情况下设计的。
可维护性
在已部署系统的生存期中,适度的更改是可能的,但由于十分困难,所以很少尝试进行实质的结构更改。这是很遗憾的,因为在事件的自然过程中,这种实质上的更改会变得很有必要。例如,当已部署的应用程序越来越受用户欢迎时,增加的性能负荷可能需要进行结构更改。随着已部署的应用程序服务器上的性能负荷的增长,系统资源会变得不足,并且响应时间或吞吐量会受到影响。面对该问题,软件设计者可以选择将服务器的业务逻辑处理和用户界面处理划分到单独计算机上的单独层上。实际上,应用程序服务器层将替换为两层,缓解了系统资源缺乏。
该问题并不是要设计三层应用程序。相反,它是要在应用程序部署以后增加层数。如果原始应用程序使用数据集以 ADO.NET 实现,则该转换很容易进行。请记住,当用两层替换单个层时,将安排这两层交换信息。由于这些层可以通过 XML 格式的数据集传输数据,所以通讯相对较容易。
可编程性
Visual Studio 中的 ADO.NET 数据组件以不同方式封装数据访问功能,帮助您加快编程速度并减少犯错几率。例如,数据命令提取生成和执行 SQL 语句或存储过程的任务。
同样,由这些工具生成的 ADO.NET 数据类导致类型化数据集。这又使您可以通过已声明类型的编程访问数据。例如,请考虑下面这行代码(它访问未声明类型的数据集内的数据成员):
' Visual Basic
If TotalCost > DataSet1.Tables("Customers").Rows(i)("AvailableCredit") Then
// C#
if (TotalCost > DataSet1.Tables["Customers"].Rows[i]["AvailableCredit"]) { }
访问已声明类型的数据集内的数据成员的等效代码行如下所示:
' Visual Basic
If TotalCost > DataSet1.Customers("Jones").AvailableCredit Then
// C#
if(TotalCost > DataSet1.Customers("Jones").AvailableCredit) { }
已声明类型的数据集的代码更易阅读。因为提供了语句结束,所以它还便于编写。例如,“AvailableCredit”在完成以下语句的选择列表中:
IF TotalCost > Customer.
最后,已声明类型的数据集的代码更安全,原因在于它提供对类型的编译时检查。例如,假定 AvailableCredit 表达为货币值。如果程序员误向 AvailableCredit 分配了字符串值,则环境会在编译时向程序员报告该错误。当使用未声明类型的数据集时,程序员直到运行时才会知道该错误。
有关类型化数据集和非类型化数据集的更多信息,请参阅数据集介绍。
性能
对于不连接的应用程序,ADO.NET 数据库提供的性能优于 ADO 不连接的记录集。当使用 COM 封送在层间传输不连接的记录集时,会因将记录集内的值转换为 COM 可识别的数据类型而导致显著的处理开销。在 ADO.NET 中,这种数据类型转换则没有必要。
可伸缩性
因为 Web 可以极大增加对数据的需求,所以可缩放性变得很关键。Internet 应用程序具有无限的潜在用户供应。尽管应用程序可以很好地为十几个用户服务,但它可能不能向成百上千个(或几百万个)用户提供同样好的服务。使用数据库锁和数据库连接之类资源的应用程序不能很好地为大量用户服务,因为用户对这些有限资源的需求最终将超出其供应。
ADO.NET 通过鼓励程序员节省有限资源来实现可缩放性。由于所有 ADO.NET 应用程序都使用对数据的不连接访问,因此它不会在较长持续时间内保留数据库锁或活动数据库连接。
ADO.NET 是微软.NET框架中用于访问和管理数据的核心组件,它提供了一种高效、灵活的方式来与各种数据源交互,包括关系数据库、XML文件、Web服务等。此中文手册是学习ADO.NET的重要参考资料,涵盖了从基础概念到高级特性的全方位教程。
ADO.NET的设计目标是为了提高数据访问的效率、可维护性和互操作性。它采用了不连接的数据访问模式,允许应用程序在不需要持续连接数据库的情况下处理数据,从而降低了资源消耗并提高了性能。此外,通过使用XML,ADO.NET实现了与各种平台和语言之间的数据交换,增强了跨平台的兼容性。
ADO.NET的结构包括几个主要组件:`.NET 数据提供程序`、`Connection`、`Command`、`DataReader`、`DataSet`和`DataAdapter`。`.NET 数据提供程序`是访问特定数据源的桥梁,比如SQL Server .NET Data Provider、OLE DB .NET Data Provider等,它们提供了与数据库通信的具体实现。`Connection`对象负责建立和管理与数据源的连接,而`Command`对象则用于执行SQL语句或存储过程。`DataReader`是一个高效的数据流,用于按需逐行读取结果集。`DataSet`是内存中的数据集合,可以包含多个表、关系和约束,它允许离线操作数据。`DataAdapter`作为桥梁,负责在`DataSet`和数据源之间同步数据,执行插入、更新和删除操作。
在实际应用中,可以通过`DataAdapter`的`Fill`方法填充`DataSet`,然后使用`Update`方法将`DataSet`中的更改保存回数据库。`DataSet`中的`DataTable`和`DataColumn`可以映射到数据库表和列,通过`DataRelation`对象可以建立表间的关联。对于复杂操作,如事务处理,可以通过`Connection`对象的`Transaction`属性来实现。
在处理XML数据时,`DataSet`可以与XML数据进行互操作,加载和保存XML文档。`DiffGram`是一种特殊的XML格式,用于表示`DataSet`中的更改。同时,`DataSet`可以从XML架构(XSD)加载和生成约束,使得数据验证更加严格。
对于安全性,`.NET 数据提供程序`支持代码访问安全性,允许开发人员控制代码对数据源的访问权限。
此外,手册还介绍了如何创建和自定义`DataTable`,以及使用`DataView`进行数据排序和筛选。`DataView`提供了动态视图,常用于数据绑定场景。在处理并发操作时,ADO.NET提供了开放式并发模型,允许在多用户环境中安全地更新数据。
通过示例,开发者可以学习如何实现自定义的`.NET 数据提供程序`,理解每个组件的工作原理和接口实现。对于初学者和有经验的开发人员来说,这个手册都是深入理解和使用ADO.NET不可或缺的资源。
评论3
最新资源