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

注释

此类 DataSet 和相关类是 2000 年代初的旧版 .NET Framework 技术,使应用程序能够在应用与数据库断开连接时处理内存中的数据。 这些技术对于使用户能够修改数据并将更改保留回数据库的应用特别有用。 尽管数据集是经过证实的成功技术,但新 .NET 应用程序的建议方法是使用 Entity Framework Core。 Entity Framework 提供了一种更自然的方式来将表格数据用作对象模型,并且具有更简单的编程接口。

参数化查询返回满足查询中子句条件 WHERE 的数据。 例如,可以通过添加到 WHERE City = @City 返回客户列表列表的 SQL 语句的末尾来参数化客户列表,以仅显示特定城市中的客户。

数据集设计器中创建参数化 TableAdapter 查询。还可以使用“数据”菜单上的“参数化数据源”命令在 Windows 应用程序中创建它们。 参数化数据源命令会在您的窗体上创建控件,您可以在其中输入参数值并运行查询。

注释

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

创建参数化 TableAdapter 查询

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

  • 创建新的 TableAdapter,将一个具有所需参数的 WHERE 子句添加到 SQL 语句中。 有关详细信息,请参阅 “创建和配置 TableAdapters”。

  • 向现有 TableAdapter 添加查询,向 SQL 语句添加 WHERE 具有所需参数的子句。

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

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

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

  3. 完成 “搜索条件生成器 ”对话框,向 SQL 语句添加 WHERE 具有所需参数的子句。

向现有数据绑定表单添加查询

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

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

    注释

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

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

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

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

  5. “查询文本 ”框中键入采用参数的查询。

  6. 选择“确定”

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

查询空值

如果要查询没有当前值的记录,可以为 TableAdapter 参数分配 null 值。 例如,假设以下查询的 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的参数。