在 .NET Framework 應用程式中建立及設定 TableAdapter

注意

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

TableAdapters 會提供應用程式與資料庫之間的通訊。 它們會連線到資料庫、執行查詢或預存程序,並傳回新的資料表,或使用傳回的資料填入現有的 DataTable。 TableAdapter 也會將更新的資料從您的應用程式傳回至資料庫。

當您執行下列其中一個動作時,會為您建立 TableAdapters:

  • 將資料庫物件從 伺服器總管 拖曳至 資料集設計工具

  • 執行 [資料來源設定精靈],然後選取 [資料庫][Web 服務] 資料來源類型。

    Visual Studio 中的資料來源設定精靈

您也可以建立新的 TableAdapter,並將 TableAdapter 從 [工具箱] 拖曳至 [資料集設計工具] 介面中的空白區域,以使用資料來源進行設定。

如需 TableAdapters 的簡介,請參閱 使用 TableAdapters 填滿資料集

注意

在本文的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置。 您使用的可能是不同版本的 Visual Studio 或不同的環境設定。 如需詳細資訊,請參閱將 IDE 個人化

使用 TableAdapter 設定精靈

執行 TableAdapter 設定精靈 以建立或編輯 TableAdapter 以及與其關聯的 DataTable。 您可以在資料集設計工具中,以滑鼠右鍵按一下現有的 TableAdapter。

螢幕擷取畫面,其中顯示了資料表配接器設定精靈。

如果您在 資料集設計工具 處於焦點時,從工具箱拖曳新的 TableAdapter,精靈就會啟動並提示您指定 TableAdapter 應該連接的資料來源。 在下一個頁面上,精靈會詢問應該使用何種命令來與資料庫通訊,SQL 陳述式還是或預存程序。 (如果您設定的 TableAdapter 已與資料來源相關聯,則您不會看到此畫面。)

  • 如果您有正確的資料庫權限,可以選擇在基礎資料庫中建立新的預存程序。 如果您沒有這些權限,則此選項不可用。

  • 為 TableAdapter 的 SELECTINSERTUPDATEDELETE 命令,選取要執行的預存程序。 例如,在呼叫 TableAdapter.Update() 方法時,會執行指派給 Update 命令的預存程序。

從已選取預存程序將參數對應至資料表中對應的資料行。 例如,若預存程序接受名稱為 @CompanyName 的參數,並將參數傳至資料表的 CompanyName 資料行,請將 @CompanyName 參數的 [來源資料行] 設為 CompanyName

注意

指派給 SELECT 命令的預存程序是藉由呼叫您在精靈下一個步驟中命名的 TableAdapter 方法來執行。 預設方法是 Fill,因此通常用來執行 SELECT 程序的程式碼是 TableAdapter.Fill(tableName)。 如果您從 Fill 變更預設名稱,請將 Fill 取代為您指派的名稱,並以 TableAdapter 的實際名稱取代 「TableAdapter」(例如,CustomersTableAdapter)。

  • 選取 [建立方法將更新直接傳送至資料庫] 選項相當於將 GenerateDBDirectMethods 屬性設定為 true。 當原始 SQL 陳述式未提供足夠的資訊,或查詢不是可更新的查詢時,就無法使用此選項。 例如,在 JOIN 查詢以及傳回單一 (標量) 值的查詢中,即可能會發生此情況。

精靈中的 進階選項 可讓您:

  • 產生 SQL 陳述式頁面中定義的 SELECT 陳述式上,產生 INSERTUPDATEDELETE 陳述式
  • 使用開放式並行存取
  • 指定是否在執行 INSERTUPDATE 陳述式之後重新整理資料表

設定 TableAdapter 的填滿方法

有時候,您可能想要變更 TableAdapter 資料表的結構描述。 若要這樣做,您可以修改 TableAdapter 的主要 Fill 方法。 TableAdapters 是使用定義相關聯資料表結構描述的主要 Fill 方法所建立。 主要 Fill 方法是根據您最初設定 TableAdapter 時輸入的查詢或預存程序。 這是資料設計集工具中資料表底下的第一個 (最上層) 方法。

具有多個查詢的 TableAdapter

對 TableAdapter 的主要 Fill 方法所做的任何變更,都會反映在相關資料表的結構描述中。 例如,從主要 Fill 方法中移除資料行,也會從相關聯的資料表中移除資料行。 此外,從主要 Fill 方法移除資料行,會從該 TableAdapter 的任何其他查詢中移除資料行。

您可以使用 [TableAdapter 查詢設定精靈] 來建立和編輯加入至 TableAdapter 的其他查詢。 這些額外的查詢必須符合資料表結構描述,除非它們傳回純量值。 每個額外的查詢都有您指定的名稱。

下列範例示範如何呼叫名為 FillByCity 的其他查詢:

CustomersTableAdapter.FillByCity(NorthwindDataSet.Customers, "Seattle")

使用新的查詢啟動 TableAdapter 查詢設定精靈

  1. 在 [資料集設計工具] 中開啟資料集。

  2. 如果要建立新查詢,請從工具箱資料集索引標籤中,將查詢物件拖曳到 DataTable 上,或從 TableAdapter 的快速鍵功能表中,選取新增查詢。 您也可以將 查詢 物件拖曳到 資料集設計工具 的空白區域,這會建立 TableAdapter,而不需要相關聯的 DataTable。 這些查詢只能傳回單一 (純量) 值,或針對資料庫執行 UPDATEINSERTDELETE 命令。

  3. 在 [選擇您的資料連線] 畫面上,選取或建立查詢將使用的連線。

    注意

    只有當設計工具無法判斷要使用的適當連線,或沒有可用的連線時,才會顯示此畫面。

  4. [選擇命令類型] 畫面上,從下列擷取資料庫資料的方法中選取:

    • 使用 SQL 陳述式 可讓您輸入 SQL 陳述式,以從資料庫選取資料。

    • 建立新的預存程序可讓您讓精靈根據指定的 SELECT 陳述式建立新的預存程序 (在資料庫中)。

    • 使用現有的預存程序 可讓您在執行查詢時執行現有的預存程序。

在現有的查新上開始使用 TableAdapter 查詢設定精靈

  • 如果您正在編輯現有的 TableAdapter 查詢,請以滑鼠右鍵按一下該查詢,然後從快速鍵功能表中選擇設定

    注意

    以滑鼠右鍵按一下 TableAdapter 的主要查詢會重新設定 TableAdapter 和 DataTable 結構描述。 不過,以滑鼠右鍵按一下 TableAdapter 上的其他查詢,只會設定選取的查詢。 TableAdapter 設定精靈 會重新設定 TableAdapter 定義,而 TableAdapter 查詢設定精靈 只會重新設定選取的查詢。

將全域查詢新增至 TableAdapter

  • 全域查詢是傳回單一 (純量) 值的 SQL 查詢,或沒有值。 一般而言,全域函式會執行資料庫作業,例如插入、更新和刪除。 它們也會匯總資訊,例如資料表中的客戶計數,或特定訂單中所有項目的總費用。

    您可以從工具箱[資料集] 索引標籤拖曳 [查詢] 物件,以將全域查詢拖曳到 資料集設計工具 的空白區域。

  • 提供執行所需工作的查詢,例如,SELECT COUNT(*) AS CustomerCount FROM Customers

    注意

    查詢 物件直接拖曳到 [資料集設計工具] 會建立只傳回純量 (單一) 值的方法。 雖然您選取的查詢或預存程序可能會傳回多個單一值,但精靈所建立的方法只會傳回單一值。 例如,查詢可能會傳回所傳回資料之第一個資料列的第一個資料行。