備註
類別 DataSet 和相關類別是 2000 年代初的舊版 .NET Framework 技術,可讓應用程式在應用程式與資料庫中斷連線時使用記憶體中的數據。 這些技術特別適用於可讓使用者修改數據並將變更保存回資料庫的應用程式。 雖然數據集是經過證實的成功技術,但新 .NET 應用程式的建議方法是使用 Entity Framework Core。 Entity Framework 提供更自然的方式,以表格式數據作為物件模型使用,而且具有更簡單的程序設計介面。
TableAdapters 可讓您的應用程式與資料庫之間進行通訊。 它們會連線到資料庫、執行查詢或預存程式,並傳回新的數據表,或使用傳回的數據填入現有的 DataTable 類別實例。 TableAdapters 也可以將更新的數據從您的應用程式傳送回資料庫。
當您執行下列其中一個動作時,會建立 TableAdapters:
將資料庫物件從 [伺服器 總管] 拖曳至 數據集設計工具。
將
TableAdapter物件從 [工具箱 ] 拖曳至 數據集設計 工具介面中的空白區域,然後設定數據源。執行 [數據源組態精靈],然後選取 [資料庫 ] 或 [Web 服務 ] 數據源類型:
如需 TableAdapters 簡介,請參閱 使用 TableAdapters 填滿數據集。
先決條件
若要完成本文中的程式,必須滿足下列必要條件:
- Visual Studio。 立即下載Visual Studio。
備註
本文中的指示說明 Visual Studio 中可用的互動式開發體驗 (IDE) 最新版本。 您的電腦可能會顯示某些使用者介面元素的不同名稱或位置。 您可能使用不同的 Visual Studio 版本或不同的環境設定。 如需詳細資訊,請參閱 個人化 IDE。
存取 TableAdapter 組態精靈
您可以使用 TableAdapter 組態精靈來建立新的 TableAdapters 或編輯現有的實例,以及設定其相關聯的數據表。
若要使用精靈設定現有的 TableAdapter,請以滑鼠右鍵按鍵單擊 數據集設計 工具中的 TableAdapter 實例,然後選取 [ 設定]:
若要使用精靈建立新的 TableAdapter,請將 物件從 [工具箱] 拖曳
TableAdapter至數據集設計工具介面中的空白區域。
使用精靈
針對 TableAdapter 設定, TableAdapter 設定精靈 會引導您完成下列工作:
設定 TableAdapter 的必要設定。
指定 TableAdapter 連接的數據來源類型。
識別用來與資料庫通訊的命令,也就是 SQL 語句或預存程式。 如果 TableAdapter 已經與數據源相關聯,您就不會在精靈中看到此選項。
視需要建立預存程式。
如果您有資料庫的正確許可權,請在基礎資料庫中建立新的預存程式。 如果您沒有必要的許可權,則精靈中無法使用此選項。
視需要執行現有的預存程式。
TableAdapter 的 SELECT、INSERT、UPDATE 和 DELETE 命令都有可用的程序。 例如,指派給 UPDATE 命令的預存程式會在您呼叫
TableAdapter.Update()方法時執行。將所選預存程式的參數對應至數據表中的對應數據行。 例如,如果您的預存程式接受名為
@CompanyName的參數,它會傳遞給CompanyName數據表中的數據行,請將 參數的@CompanyNameSource Column 設定為CompanyName。備註
針對 SELECT 命令,預存程式預設會在呼叫 TableAdapter
Fill方法時執行。 您可以在精靈的後續頁面中 指定 Fill() 方法的名稱 。 當您使用預設方法時,執行 SELECT 命令預存程式的一般程式代碼為TableAdapter.Fill(<TableName>)。 您將<TableName>部分替換為資料表的名稱。如果您從
Fill變更預設方法名稱,則必須更新程序的程序代碼。 將 取代Fill為新的方法名稱,並使用 TableAdapter 的實際名稱。 例如,針對名為CustomersTableAdapter的 TableAdapter 和名為CustomersTable的數據表,如果您將Fill方法名稱變更為AddData,請將程式代碼更新為CustomersTableAdapter.AddData(CustomersTable)。- 選擇是否要啟用 [建立方法] 以將更新直接傳送至資料庫 選項。 啟用此選項時,相當於將
GenerateDBDirectMethods屬性設定為 true。 當原始 SQL 語句未提供足夠的資訊或查詢不是可更新的查詢時,無法使用此選項。 例如,當 JOIN 查詢和其他查詢傳回單一 (純量) 值時。
- 選擇是否要啟用 [建立方法] 以將更新直接傳送至資料庫 選項。 啟用此選項時,相當於將
請配置您的 進階選項偏好設定。
根據 [產生 SQL 語句] 頁面上定義的 SELECT 命令,產生 INSERT、UPDATE 和 DELETE 命令。
使用樂觀並發控制。
執行 INSERT 和 UPDATE 命令之後,重新整理資料表。
設定 TableAdapter.Fill() 方法
在某些情況下,您可能想要變更 TableAdapter 資料表的架構。 若要完成動作,您可以修改 TableAdapter 的主要 Fill 方法。 TableAdapters 是使用定義相關聯數據表架構的主要 Fill 方法所建立。 主要 Fill 方法是以您最初設定 TableAdapter 時所輸入的查詢或預存程式為基礎。 這是 數據集設計工具中數據表底下的第一個 (最上層) 方法。
您對 TableAdapter 主要 Fill 方法所做的任何變更,都反映在相關聯數據表的架構中。 例如,從 main Fill 方法中的查詢中移除數據行,也會從相關聯的數據表中移除數據行。 此外,從 main Fill 方法中移除資料行,也會從該 TableAdapter 的任何其他查詢中移除資料行。
您可以使用 TableAdapter 查詢組態精靈 來建立和編輯 TableAdapter 的其他查詢。 這些額外的查詢必須符合數據表架構,除非它們傳回純量值。 每個額外的查詢都有您指定的名稱。
下列範例示範如何呼叫名為 FillByCity的其他查詢:
CustomersTableAdapter.FillByCity(NorthwindDataSet.Customers, "Seattle")
使用精靈建立查詢
您可以遵循下列步驟,使用 TableAdapter 查詢組態精靈 建立新的查詢:
在 數據集設計工具中開啟您的數據集。
使用下列其中一個動作建立新的查詢:
- 在 數據集設計工具中,以滑鼠右鍵按下 TableAdapter,然後選取 [新增查詢]。
- 將
Query物件從工具箱的資料集索引標籤拖曳至DataTable,位於資料集設計器介面中。 - 將
Query物件從 工具箱 拖曳至 數據集設計師 表面的空白區域,這會建立一個未與 DataTable 相關聯的 TableAdapter。
這些查詢只能傳回單一 (純量) 值,或針對資料庫執行 UPDATE、 INSERT或 DELETE 命令。
在 [ 選擇您的數據連線 ] 畫面上,選取現有的連線,或為查詢建立新的連線。
備註
只有當設計工具無法判斷要使用的連線,或沒有可用的連線時,才會顯示此畫面。
在 [ 選擇命令類型] 畫面上,選取下列從資料庫擷取數據的方法,以設定命令:
使用 SQL 語句:輸入 SQL 語句以從資料庫選取數據。
建立新的預存程式:精靈會根據指定的 SELECT 命令建立新的預存程式(在資料庫中)。
使用現有的預存程式:執行查詢時,您會執行現有的預存程式。
使用精靈設定查詢
若要使用 TableAdapter 查詢設定精靈編輯現有的 TableAdapter 查詢,請以滑鼠右鍵按兩下查詢,然後選取 [ 設定]。 右鍵點擊操作會根據您選取的查詢類型而產生不同的結果:
如果是 TableAdapter 的主要查詢,則會重新設定 TableAdapter 和 DataTable 架構。
在 TableAdapter 的其他查詢中,只有選取的查詢會被重新配置。
TableAdapter 設定精靈會重新設定 TableAdapter 定義,而 TableAdapter 查詢設定精靈則只會重新設定選取的查詢。
將全域查詢新增至 TableAdapter
全域查詢是會傳回單一純量值或沒有值的 SQL 查詢。 一般而言,全域函式會執行資料庫作業,例如插入、更新和刪除。 它們也會匯總資訊,例如數據表中的客戶計數,或特定訂單中所有專案的總費用。
將物件從 [工具箱] 的 [數據集] 索引卷標拖曳
Query至數據集設計工具介面中的空白區域,以新增全域查詢。輸入執行特定工作的查詢,例如
SELECT COUNT(*) AS CustomerCount FROM Customers。備註
將
Query物件直接拖曳到 數據集設計 工具介面會建立只傳回純量值的方法。 雖然您選取的查詢或預存程式可能會傳回多個單一值,但精靈所建立的方法只會傳回單一值。 例如,查詢可能會傳回所得到資料的第一列的第一行。