Share via


在 .NET Framework 應用程式中建立參數化 TableAdapter 查詢

注意

資料集和相關類別是 2000 年代初的舊版 .NET Framework 技術,可讓應用程式在應用程式與資料庫中斷連線時使用記憶體中的資料。 它們特別適用於可讓使用者修改資料並將變更保存回資料庫的應用程式。 雖然已證明資料集是非常成功的技術,但建議新的 .NET 應用程式使用 Entity Framework Core。 Entity Framework 提供更自然的方式,將表格式資料作為物件模型使用,而且具有更簡單的程式設計介面。

參數化查詢會傳回符合查詢中 WHERE 子句條件的資料。 例如,您可以將 WHERE City = @City 加入至傳回客戶清單的 SQL 陳述式結尾,以參數化客戶清單,使其只顯示特定城市的客戶。

您可以在 資料集設計工具中建立參數化 TableAdapter 查詢。您也可以在 Windows 應用程式中使用 [資料] 功能表上的 Parameterize Data Source 命令來加以建立。 Parameterize Data Source 命令會在表單上建立控制項,您可以在其中輸入參數值並執行查詢。

注意

建構參數化查詢時,請使用您要撰寫程式碼之資料庫特有的參數標記法。 例如,Access 和 OleDb 資料來源使用問號 '?' 代表參數,所以 WHERE 子句應該類似:WHERE City = ?

建立參數化的 TableAdapter 查詢

在 資料集設計工具中建立參數型查詢

  • 建立新的 TableAdapter,並將具有所需參數的 WHERE 子句加入至 SQL 陳述式。 如需詳細資訊,請參閱建立及設定 TableAdapters

  • 將查詢加入至現有 TableAdapter,並將具有所需參數的 WHERE 子句加入至 SQL 陳述式。

在設計資料繫結表單時建立參數型查詢

  1. 在表單上選取已繫結至資料集的控制項。 如需詳細資訊,請參閱將 Windows Forms 控制項繫結至 Visual Studio 中的資料

  2. 在 [資料] 功能表上,選取 [新增查詢]

  3. 完成搜尋準則建立器對話框,並將具有所需參數的 WHERE 子句新增至 SQL 陳述式。

將查詢加入至現有的資料繫結表單

  1. Windows Forms 設計工具中開啟表單。

  2. 在 [資料] 功能表上,選取 [新增查詢] 或 [資料智慧標籤]

    注意

    若 [資料] 功能表中的 [新增查詢] 無法使用,請選取表單上顯示您想要新增參數化之資料來源的控制項。 例如,若表單以 DataGridView 控制項顯示資料,請選取此控制項。 若表單以個別控制項顯示資料,請選取任何資料繫結控制項。

  3. 在 [選取資料來源資料表] 區域中,選取您要新增參數化的資料表。

  4. 如果您要建立新查詢,請在 [新的查詢名稱] 方塊中鍵入名稱。

    選取 [現有的查詢名稱] 方塊中的查詢。

  5. 在 [查詢文字] 方塊中,輸入接受參數的查詢。

  6. 選取 [確定]。

    輸入參數的控制項及 [載入] 按鈕會新增至 ToolStrip 控制項中的表單。

查詢 Null 值

當您想要查詢沒有目前值的記錄時,可以將 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