演练:创建用于搜索数据的 Windows 窗体

一个常见的应用程序方案是显示窗体上选择的数据。 例如,您可能希望显示特定客户的订单或特定订单的详细信息。 在本方案中,用户向窗体输入信息,然后以用户的输入作为参数执行查询,即基于参数化查询来选择数据。 查询只返回符合用户输入的条件的数据。 此演练显示如何创建返回特定城市中客户的查询,并修改用户界面,以使用户可以输入城市名称并按按钮以执行该查询。

通过让数据库执行其最擅长的工作(即快速筛选记录),使用参数化查询有助于使您的应用程序更有效。 相反,如果您请求整个数据库表,在网络上传输它,然后使用应用程序逻辑查找想要的记录,则应用程序将变慢且不实用。

可以使用 “搜索标准生成器”对话框 将参数化查询添加到任何 TableAdapter(以及接受参数值和执行查询的控件)。 通过在**“数据”菜单上(或任何 TableAdapter 智能标记上)选择“添加查询”**命令来打开对话框。

本演练涉及以下任务:

系统必备

若要完成本演练,您需要:

创建 Windows 应用程序

第一步是创建**“Windows 应用程序”**。 在此步骤中为项目指定名称是可选的,但由于我们打算稍后保存该项目,因此为它指定了一个名称。

创建新的 Windows 应用程序项目

  1. 从**“文件”**菜单创建一个新的项目。

  2. 将该项目命名为 WindowsSearchForm。

  3. 选择**“Windows 应用程序”,然后单击“确定”**。 有关更多信息,请参见 创建基于 Windows 的应用程序

    **“WindowsSearchForm”项目即被创建并添加到“解决方案资源管理器”**中。

创建数据源

此步骤使用**“数据源配置向导”**从数据库创建一个数据源。 您必须具有访问 Northwind 示例数据库的权限,才能创建连接。 有关设置 Northwind 示例数据库的信息,请参见 如何:安装示例数据库

创建数据源

  1. 在**“数据”菜单上,单击“显示数据源”**。

  2. 在**“数据源”窗口中,选择“添加新数据源”,启动“数据源配置向导”**。

  3. 在**“选择数据源类型”页上选择“数据库”,然后单击“下一步”**。

  4. 在**“选择您的数据连接”**页面上执行下列操作之一:

    • 如果下拉列表中包含到 Northwind 示例数据库的数据连接,请选择该连接。

      - 或 -

    • 选择**“新建连接”,以启动“添加/修改连接”**对话框。 有关更多信息,请参见 “添加/修改连接”对话框(通用)

  5. 如果数据库需要密码,请选择该选项以包括敏感数据,再单击**“下一步”**。

  6. 在**“将连接字符串保存到应用程序配置文件”页面上单击“下一步”**。

  7. 在**“选择数据库对象”页面上展开“表”**节点。

  8. 选择**“Customers”表,然后单击“完成”**。

    **“NorthwindDataSet”即被添加到您的项目中,并且“数据源”窗口中出现“Customers”**表。

创建窗体

可以通过将某些项从**“数据源”**窗口拖到您的窗体上来创建数据绑定控件。

在窗体上创建数据绑定控件

  1. 在**“数据源”窗口中展开“Customers”**节点。

  2. 将**“Customers”节点从“数据源”**窗口中拖到窗体上。

    窗体上出现用于导航记录的 DataGridView 和工具栏 (BindingNavigator)。 组件栏中出现 NorthwindDataSetCustomersTableAdapterBindingSourceBindingNavigator

向查询添加参数化功能(搜索功能)

使用 “搜索标准生成器”对话框 向原始查询添加一个 WHERE 子句。

创建参数化查询和用于输入参数的控件

  1. 选择 DataGridView 控件,然后在**“数据”菜单上选择“添加查询”**。

  2. “搜索标准生成器”对话框 的**“新查询名称”**区域中键入 FillByCity。

  3. 将 WHERE City = @City 添加到**“查询文本”**区域的查询中。

    查询应当类似于:

    SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax

    FROM Customers

    WHERE City = @City

    提示

    Access 和 OleDb 数据源使用问号“?”表示参数,所以 WHERE 子句将类似于:WHERE City = ?。

  4. 单击**“确定”关闭“查询标准生成器”**对话框。

    **“FillByCityToolStrip”**即添加到窗体中。

测试应用程序

运行应用程序以打开准备接收参数作为输入的窗体。

测试应用程序

  1. 按 F5 运行应用程序。

  2. 在**“City”文本框中键入“London”,然后单击“FillByCity”**。

    数据网格即用符合参数化条件的客户填充。 在此示例中,数据网格只显示其**“City”列中有“London”**值的客户。

后续步骤

根据应用程序的要求,在创建参数化窗体后可能还需要执行一些步骤。 您可以通过以下操作来增强此演练的效果:

请参见

参考

BindingSource 组件概述

BindingNavigator 控件概述(Windows 窗体)

概念

数据应用程序开发中的新增功能

在 Visual Studio 中将 Windows 窗体控件绑定到数据

数据源概述

TableAdapter 概述

其他资源

数据演练