在 .NET Framework 应用程序中创建参数化 TableAdapter 查询

注意

数据集和相关类是 2000 年代初的旧 .NET Framework 技术,使应用程序能够在应用程序与数据库断开连接时处理内存中的数据。 这些方法对于使用户能够修改数据并持续更改回数据库的应用程序特别有用。 虽然数据集已被证明是一项非常成功的技术,但我们建议新的 .NET 应用程序使用 Entity Framework Core。 实体框架提供了一种更自然的方式来将表格数据作为对象模型,并且具有更简单的编程接口。

参数化查询返回满足查询内的 WHERE 子句条件的数据。 例如,通过在返回客户列表的 SQL 语句的末尾添加 WHERE City = @City,可以参数化客户列表,使之只显示某个城市的客户。

可在数据集设计器中创建参数化 TableAdapter 查询,也可使用数据菜单上的参数化数据源命令在 Windows 应用程序中创建此类查询。 参数化数据源命令会在窗体上创建控件,用于输入参数值和运行查询。

备注

构造参数化查询时,使用特定于要编码的数据库的参数表示法。 例如,Access 和 OleDb 数据源使用问号“?”表示参数,所以 WHERE 子句应当如下:WHERE City = ?

创建参数化 TableAdapter 查询

在“数据集设计器”中创建参数化查询

  • WHERE 子句和所需参数添加到 SQL 语句,以创建新的 TableAdapter。 有关详细信息,请参阅创建和配置 TableAdapter

  • WHERE 子句和所需参数添加到 SQL 语句,以向现有 TableAdapter 中添加查询。

在设计数据绑定窗体时创建参数化查询

  1. 在窗体中选择已绑定到数据集的控件。 有关详细信息,请参阅在 Visual Studio 中将 Windows 窗体控件绑定到数据

  2. 数据菜单上,选择添加查询

  3. WHERE 子句和所需参数添加到 SQL 语句,以完成搜索条件生成器对话框。

将查询添加到现有数据绑定窗体

  1. Windows 窗体设计器中打开窗体。

  2. 数据菜单上,选择添加查询数据智能标记

    备注

    如果“添加查询”在“数据”菜单上不可用,请在窗体上选择一个控件,该窗体将显示你希望参数化功能添加到的数据源。 例如,如果窗体在 DataGridView 控件中显示数据,则选择该控件。 如果窗体在各个控件中显示数据,则选择任意数据绑定控件。

  3. 选择数据源表区域中,选择要添加参数化的表。

  4. 如果要创建新查询,请在“新建查询名称”框中键入名称

    在“现有查询名称”框中选择查询

  5. 查询文本框中,键入一个采用参数的查询。

  6. 选择确定

    用于输入参数的控件和加载按钮将添加到 ToolStrip 控件的窗体中。

查询 NULL 值

如果要查询不包含当前值的记录,则可以为 TableAdapter 参数赋予空值。 例如,假设以下查询的 WHERE 子句中有一个 ShippedDate 参数:

SELECT CustomerID, OrderDate, ShippedDate
FROM Orders
WHERE (ShippedDate = @ShippedDate) OR (ShippedDate IS NULL)

如果这是针对 TableAdapter 的查询,可以使用以下代码查询所有未发货的订单:

ordersTableAdapter.FillByShippedDate(northwindDataSet.Orders, null);

若要使查询能够接受 NULL 值,请执行以下操作:

  1. 数据集设计器中,选择需要接受 NULL 参数值的 TableAdapter 查询。

  2. 属性窗口中,选择参数,然后选择省略号 (...) 按钮以打开参数集合编辑器

  3. 选择允许存在 NULL 值的参数并将 AllowDbNull 属性设置为 true