ADO.NET 初学者指南






2.43/5 (7投票s)
如何创建访问数据的应用程序
引言
本文的目的是让初学者了解如何使用 Visual Basic 创建一个基于数据库的 Windows Forms 应用程序。任何使用 Visual Basic 开发过应用程序的人都知道,Windows Form 提供了一套丰富的控件,可以拖放到用户界面上。ADO.NET 用于处理数据库信息,通过结合程序代码和 Windows Forms 控件,实现显示、修改和搜索数据库内容。Microsoft Visual Studio 2005 专门用于创建能够访问各种数据源的应用程序。自 .NET 2.0 以来,Visual Studio 2005 就可以利用部分类,以便 IDE 生成代码。为了避免直接查询数据库的复杂性,我们将创建一个可以访问数据库数据的应用程序,而不是让用户直接访问数据库。在工作环境中,用户可能面临数据库访问限制,或者可能没有接受过处理复杂查询的特定培训。
为了开发一个在其用户界面具有逻辑以便访问数据存储或数据库的应用程序,我们将使用数据源配置向导来建立与 Microsoft Access 数据库的连接。由于我选择使用 Access 数据库,数据提供程序将来自 System.Data.OleDb
命名空间。ADO.NET 首先管理与数据库的连接,无论您想连接到哪种类型的数据库或其他数据源。连接包括定位数据库的过程,无论是通过文件系统还是网络协议。它为应用程序与数据库进行通信建立连接。当应用程序请求从数据库检索数据时,ADO.NET 会同时管理应用程序的请求和响应。
在 ADO.NET 中,各种对象用于检索和修改数据库中的信息。在以下示例中,我们将使用数据源配置向导来建立与 Microsoft Access 数据库的连接。如前所述,ADO.NET 会像管理任何其他数据库连接一样管理此数据库连接,无论您想连接到哪种类型的数据库或其他数据源。第一步中最重要的部分是理解建立连接实际上会指定有关数据库的信息,并为其他控件和组件创建绑定对象。因此,连接包括通过使用文件系统或网络协议来定位数据库的过程,以便开始与 Access 数据库进行通信。这将开始将数据绑定到用户界面控件。接下来,数据源配置向导会创建一个 DataSet 对象,它是您在程序中处理的一个或多个表的表示。请注意,您不会直接操作永久 Access 文件中的数据,而是操作数据的副本——您是在处理内存中的数据副本。当您进行更改时,例如添加记录(行)、删除记录或修改记录,您都是在处理该数据的内存副本。在进行更改后,它们会被复制到永久数据库。在 ADO.NET 术语中,DataAdapter 是连接到数据库以填充 DataSet 的对象。
之后,它会连接回数据库,根据 DataSet 持有数据期间执行的修改来更新那里的数据。这意味着 DataSet 对数据的来源一无所知,而托管数据提供程序拥有具体信息。托管提供程序的作用是连接、填充 DataSet,以及将 DataSet 持久化到数据库以及从数据库中读取。以下是托管提供程序:
.NET Framework 数据提供程序
System.Data.OleDb
System.Data.SqlClient
System.Data.Odbc
System.Data.Oracle
这些派生自 System.Data
(ADO.NET) 命名空间的数据提供程序提供四种基本对象:
- 连接
- Commands
- DataReader
- DataSets
- DataAdapter
接下来,向导会显示一个屏幕,通过构建一个称为连接字符串的语句来帮助您建立与 Access 数据库的连接。连接字符串包含 Visual Studio 打开和提取数据库文件信息所需的。请注意,只要连接保持打开状态,您的应用程序就可以与数据库通信。我们从数据源集合中选择 Microsoft Access 数据库文件,并从数据提供程序选择中选择 OLE DB 的 .NET Framework 数据提供程序。执行此操作时,您需要从解压缩项目文件的目录中提取下载的 Access 文件。在测试连接成功后,我们单击“确定”关闭“添加连接”对话框。我们保存默认连接字符串,然后会被提示选择我们要用于此特定项目的数据库对象的子集。
回想一下,建立的连接指定了数据库信息并为其他控件和组件创建了绑定对象。这使得数据可以绑定到 Windows Form。数据绑定是用户界面控件的一项功能,它允许它们从数据库中检索信息并将其显示给最终用户。有些控件可能只显示一个数据字段,因此我们将使用 DataGrid
控件,它允许我们显示多行数据的多个字段,以及网格内的多行数据。其他控件将允许我们根据最终用户的目的编辑数据。数据源配置向导还会向我们的项目添加一个 XML 架构文件,并为数据集关联一个表适配器和一个数据导航器,以处理从数据库检索数据、提交更改以及在记录之间移动。然后,您可以使用“数据源”窗口或“数据绑定”属性设置,将数据集中的信息绑定到窗体上的控件。
我们首先创建一个新项目,并将其命名为 Windows Form AccessData
。新窗体出现在 IDE 中。然后,我们转到“数据”菜单并选择“添加新数据源”命令。数据源配置向导出现在开发环境中。然后,我们单击数据库图标。
您在对话框中选择的项目在项目中被称为数据库对象。数据库对象可以包括字段和记录的表、数据库视图、存储过程、函数以及您的数据库特有的其他项目。您选择的所有数据库对象的集合术语是 DataSet
。DataSet
被称为 StudentDataSet
,因为这是 Access 数据库文件的名称。它可以轻松更改为 DepartmentDataSet
。我们单击“完成”以完成并关闭数据源配置向导。
现在,如果我们查看“解决方案资源管理器”,会看到一个名为 StudentDataSet.xsd 的新文件。这是一个 XML 架构文件。ADO.NET 使用 XSD 文件来定义 ADO.NET 将在内部用于管理从数据库中提取的数据副本的数据集结构,以便您可以在计算机内存中处理该数据。换句话说,您可以向数据集中添加记录,从数据集中删除记录,以及修改数据集中的记录;一旦更改被提交到数据集的内存副本,数据就会被复制到永久数据库。您单击“解决方案资源管理器”中的架构文件,可以在一个称为数据集设计器的可视化界面中看到与新数据集相关的表、字段和数据适配器命令的视觉表示。永久数据库中的项目与 xsd 文件中的可视化表示之间存在一对一的对应关系。您想要将控件拖放到 Windows Form 上。打开的数据源容器将显示一个下拉框,其中包含一个数据网格控件视图。您从该下拉框中选择数据网格选项,然后将整个数据库拖放到窗体上。
按 F7 键生成解决方案,然后单击“开始但不调试”选项。请注意,当您拖放数据库到窗体上时,会创建一个名为 StudentDataSet
的对象的实例。在设计器托盘中的窗体下方,您应该会看到 StudentDataSet
、DeparmentBindingSource
、DepartmentTableAdapter
和 DepartmentBindingNavigator
。这些控件对应于工具箱中的数据控件。当我们运行应用程序时,您将拥有一个功能齐全的应用程序,其中的字段可以编辑。
此时,值得一提的是 Visual Studio 2005 的数据绑定功能。您现在应该知道 StudentDataSet
是我们从数据库中提取的数据的内存存储区域。如果您决定修改名为 StudentDataSet
的内存存储区域,您可以将这些更改传播回数据库。回想一下,DataAdapter 是连接到数据库以填充 DataSet
的对象。这就是数据如何从数据库传输到 DataSet
。窗体加载后,它会请求加载数据。这就引出了 DepartmentsTableAdpater
。表适配器知道如何从表中检索数据,然后知道如何将信息写回表中,或者可能知道如何从表中删除数据。但它知道如何与底层数据库通信,以便使更改与在内存中对 student dataset 所做的更改保持一致。绑定源对象用于将 DataSet
中的数据与窗体上当前显示的数据同步。此对象协调 DataSet
中的数据与字段中的数据。最后,绑定导航器是对工具栏的引用,用于帮助我们导航记录或创建新记录。因此,此对象与绑定源对象通信。