演练:创建用于搜索数据的 Windows 窗体
一个常见的应用程序方案是显示窗体上选择的数据。 例如,您可能希望显示特定客户的订单或特定订单的详细信息。 在本方案中,用户向窗体输入信息,然后以用户的输入作为参数执行查询,即基于参数化查询来选择数据。 查询只返回符合用户输入的条件的数据。 此演练显示如何创建返回特定城市中客户的查询,并修改用户界面,以使用户可以输入城市名称并按按钮以执行该查询。
通过让数据库执行其最擅长的工作(即快速筛选记录),使用参数化查询有助于使您的应用程序更有效。 相反,如果您请求整个数据库表,在网络上传输它,然后使用应用程序逻辑查找想要的记录,则应用程序将变慢且不实用。
可以使用 “搜索标准生成器”对话框 将参数化查询添加到任何 TableAdapter(以及接受参数值和执行查询的控件)。 通过在**“数据”菜单上(或任何 TableAdapter 智能标记上)选择“添加查询”**命令来打开对话框。
本演练涉及以下任务:
创建新的**“Windows 应用程序”**项目。
使用 数据源配置向导 在应用程序中创建和配置数据源。
在 “数据源”窗口 中设置项的拖放类型。 有关更多信息,请参见 如何:设置从“数据源”窗口中拖动时要创建的控件。
通过将项从**“数据源”**窗口拖动到窗体上来创建显示数据的控件。
添加用于在窗体上显示数据的控件。
完成 “搜索标准生成器”对话框。
将参数输入到窗体中并执行参数化查询。
系统必备
若要完成本演练,您需要:
- 对 Northwind 示例数据库的访问权。 有关更多信息,请参见 如何:安装示例数据库。
创建 Windows 应用程序
第一步是创建**“Windows 应用程序”**。 在此步骤中为项目指定名称是可选的,但由于我们打算稍后保存该项目,因此为它指定了一个名称。
创建新的 Windows 应用程序项目
从**“文件”**菜单创建一个新的项目。
将该项目命名为 WindowsSearchForm。
选择**“Windows 应用程序”,然后单击“确定”**。 有关更多信息,请参见 创建基于 Windows 的应用程序。
**“WindowsSearchForm”项目即被创建并添加到“解决方案资源管理器”**中。
创建数据源
此步骤使用**“数据源配置向导”**从数据库创建一个数据源。 您必须具有访问 Northwind 示例数据库的权限,才能创建连接。 有关设置 Northwind 示例数据库的信息,请参见 如何:安装示例数据库。
创建数据源
在**“数据”菜单上,单击“显示数据源”**。
在**“数据源”窗口中,选择“添加新数据源”,启动“数据源配置向导”**。
在**“选择数据源类型”页上选择“数据库”,然后单击“下一步”**。
在**“选择您的数据连接”**页面上执行下列操作之一:
如果下拉列表中包含到 Northwind 示例数据库的数据连接,请选择该连接。
- 或 -
选择**“新建连接”,以启动“添加/修改连接”**对话框。 有关更多信息,请参见 “添加/修改连接”对话框(通用)。
如果数据库需要密码,请选择该选项以包括敏感数据,再单击**“下一步”**。
在**“将连接字符串保存到应用程序配置文件”页面上单击“下一步”**。
在**“选择数据库对象”页面上展开“表”**节点。
选择**“Customers”表,然后单击“完成”**。
**“NorthwindDataSet”即被添加到您的项目中,并且“数据源”窗口中出现“Customers”**表。
创建窗体
可以通过将某些项从**“数据源”**窗口拖到您的窗体上来创建数据绑定控件。
在窗体上创建数据绑定控件
在**“数据源”窗口中展开“Customers”**节点。
将**“Customers”节点从“数据源”**窗口中拖到窗体上。
窗体上出现用于导航记录的 DataGridView 和工具栏 (BindingNavigator)。 组件栏中出现 NorthwindDataSet、CustomersTableAdapter、BindingSource 和 BindingNavigator。
向查询添加参数化功能(搜索功能)
使用 “搜索标准生成器”对话框 向原始查询添加一个 WHERE 子句。
创建参数化查询和用于输入参数的控件
选择 DataGridView 控件,然后在**“数据”菜单上选择“添加查询”**。
在 “搜索标准生成器”对话框 的**“新查询名称”**区域中键入 FillByCity。
将 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 = ?。
单击**“确定”关闭“查询标准生成器”**对话框。
**“FillByCityToolStrip”**即添加到窗体中。
测试应用程序
运行应用程序以打开准备接收参数作为输入的窗体。
测试应用程序
按 F5 运行应用程序。
在**“City”文本框中键入“London”,然后单击“FillByCity”**。
数据网格即用符合参数化条件的客户填充。 在此示例中,数据网格只显示其**“City”列中有“London”**值的客户。
后续步骤
根据应用程序的要求,在创建参数化窗体后可能还需要执行一些步骤。 您可以通过以下操作来增强此演练的效果:
添加显示相关数据的控件。 有关更多信息,请参见 如何:在 Windows 窗体应用程序中显示相关数据。
编辑数据集来添加或移除数据库对象。 有关更多信息,请参见 如何:编辑数据集。
请参见
参考
BindingNavigator 控件概述(Windows 窗体)
概念
在 Visual Studio 中将 Windows 窗体控件绑定到数据