TableAdapter 概述
生活随笔
收集整理的這篇文章主要介紹了
TableAdapter 概述
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
TableAdapter 提供應用程序和數據庫之間的通信。更具體地說,TableAdapter 連接到數據庫,執行查詢或存儲過程,并返回用返回數據填充的新數據表或是用返回數據填充現有 DataTable。TableAdapter 還用于將更新數據從應用程序發送回數據庫。 早期版本的 Visual Studio 的用戶可以將 TableAdapter 視為具有內置連接對象并能夠包含多個查詢的 DataAdapter。每個添加到 TableAdapter 的查詢都公開為公共方法,該公共方法就如同對象上的任何其他方法或函數那樣進行調用。 除了 DataAdapter 的標準功能外,TableAdapter 還提供其他的類型化方法,這些方法對與關聯的類型化 DataTable 共享公共架構的查詢進行封裝。換句話說,可以在 TableAdapter 上根據需要擁有任意多的查詢,只要這些查詢返回符合同一架構的數據即可。 在 Visual Studio 的前一版本中,使用 ADO.NET 數據適配器在應用程序和數據庫之間通信。數據適配器仍然是 .NET Framework 數據提供程序的一個主要組件,而 TableAdapter 則是設計器生成的組件,它對 DataAdapter 的功能進行了改進。TableAdapter 通常包含 Fill 和 Update 方法,用于獲取和更新數據庫中的數據。 TableAdapter 是使用“數據集設計器”在強類型數據集中創建的。可以在使用數據源配置向導創建新數據集期間創建 TableAdapter。還可以使用 TableAdapter 配置向導或通過將數據庫對象從“服務器資源管理器”拖動到“數據集設計器”上,在現有數據集中創建 TableAdapter。有關更多信息,請參見如何:創建 TableAdapter。 TableAdapter 是使用“數據集設計器”設計的,但生成的 TableAdapter 類并不是作為 DataSet 的嵌套類生成的。它們位于特定于每個數據集的獨立命名空間中。例如,如果您有一個名為 NorthwindDataSet 的數據集,與 NorthwindDataSet 中的 DataTable 關聯的 TableAdapter 將位于 NorthwindDataSetTableAdapters 命名空間中。要通過編程方法訪問特定的 TableAdapter,必須聲明 TableAdapter 的新實例。例如: Visual Basic? 復制代碼
Dim northwindDataSet As New NorthwindDataSet()
Dim customersTableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter() customersTableAdapter.Fill(northwindDataSet.Customers)
?
C#? 復制代碼
NorthwindDataSet northwindDataSet = new NorthwindDataSet(); NorthwindDataSetTableAdapters.CustomersTableAdapter customersTableAdapter =
??? new NorthwindDataSetTableAdapters.CustomersTableAdapter(); customersTableAdapter.Fill(northwindDataSet.Customers);
?
J#? 復制代碼
NorthwindDataSet northwindDataSet = new NorthwindDataSet(); NorthwindDataSetCustomersTableAdapter customersTableAdapter =
??? new NorthwindDataSetCustomersTableAdapter(); customersTableAdapter.Fill(northwindDataSet.get_Customers());
? 關聯的數據表架構
創建 TableAdapter 時,將使用初始查詢或存儲過程定義 TableAdapter 的關聯 DataTable 的架構。通過調用 TableAdapter 的主 Fill 方法(此方法對 TableAdapter 的關聯 DataTable 進行填充),可以執行此初始查詢或存儲過程。任何對 TableAdapter 的主查詢的更改都會反映在關聯數據表的架構中。例如,如果將一列從主查詢中移除,該列也將從關聯的數據表中移除。如果 TableAdapter 的任何附加查詢使用的 SQL 語句將返回主查詢中沒有的列,設計器將嘗試同步主查詢和附加查詢之間的列更改情況。有關更多信息,請參見如何:編輯 TableAdapter。 TableAdapter 更新命令
TableAdapter 的更新功能依賴于有多少信息可用(基于 TableAdapter 向導中提供的主查詢)。例如,配置為從多個表(聯接)、標量值、視圖或聚合函數的結果中獲取值的 TableAdapter 最初創建時不具有將更新發送回基礎數據庫的能力。不過,可以在“屬性”窗口中手動配置 INSERT、UPDATE 及 DELETE 命令。 TableAdapter 查詢
?
與標準數據適配器不同,TableAdapter 可以包含多個查詢,以填充其關聯數據表。只要每個查詢所返回數據的架構與其關聯數據表的架構相同,您就可以根據應用程序的需要定義任意多個 TableAdapter 查詢。這樣就能加載滿足不同條件的數據。例如,如果應用程序包含一個 customers 表,您可以創建一個查詢,使用名字以某個特定字母開頭的所有客戶填充表,而另一個查詢則使用來自同一個州/省的所有客戶填充該表。若要用處于給定州/省的客戶填充 Customers 表,可以創建一個 FillByState 查詢,該查詢采用一個針對該州/省值的參數:SELECT * FROM Customers WHERE State = @State。可以通過調用 FillByState 方法并按照以下格式傳遞參數值來執行該查詢:CustomerTableAdapter.FillByState("WA")。有關更多信息,請參見如何:創建 TableAdapter 查詢。 除了那些能返回與 TableAdapter 的數據表具有相同架構的數據的查詢外,還可添加返回標量值(單值)的查詢。例如,即使返回的數據并不符合表的架構,用來返回客戶計數的查詢 (SELECT Count(*) From Customers) 對 CustomersTableAdapter 也是有效的。 ClearBeforeFill 屬性
TableAdapter 添加了一個 DataAdapter 基類所沒有的屬性。默認情況下,每次執行一個用來填充 TableAdapter 的數據表的查詢時,數據會被清除,只將該查詢的結果加載到表中。如果要將查詢返回的數據添加或合并到數據表的現有數據中,請將 TableAdapter 的 ClearBeforeFill 屬性設置為 false。無論是否清除數據,如果需要,都有必要顯式地將更新發送回數據庫。所以,在執行另一個填充表的查詢前,請記住保存任何對表中數據所做的更改。有關更多信息,請參見如何:使用 TableAdapter 更新數據。 TableAdapter 繼承
TableAdapter 通過封裝經過配置的 DataAdapter,擴展了標準數據適配器的功能。默認情況下,TableAdapter 從 Component 繼承,無法強制轉換為 DataAdapter 類。將 TableAdapter 強制轉換為 DataAdapter 將導致 InvalidCastException。若要更改 TableAdapter 的基類,可以在“數據集設計器”中的 TableAdapter 的 Base Class 屬性中鍵入從 Component 派生的類。 TableAdapter 的方法與屬性
TableAdapter 類不是 .NET Framework 的一部分,因此,不能在文檔或“對象瀏覽器”中查找它。它是在設計時使用前面提到的向導之一創建的。創建 TableAdapter 時為其分配的名稱基于正在使用的表的名稱。例如,基于數據庫中名為 Orders 的表創建 TableAdapter 時,此 TableAdapter 會被命名為 OrdersTableAdapter。可以在“數據集設計器”中使用 Name 屬性更改 TableAdapter 的類名稱。 以下是常用的 TableAdapter 方法和屬性: 成員? 說明?
TableAdapter.Fill
?用 TableAdapter 的 SELECT 命令的結果填充 TableAdapter 的關聯數據表。有關更多信息,請參見如何:使用數據填充數據集。
?
TableAdapter.Update
?將更改發送回數據庫。有關更多信息,請參見如何:使用 TableAdapter 更新數據。
?
TableAdapter.GetData
?返回一個用數據填充了的新 DataTable。
?
TableAdapter.Insert
?在數據表中創建新行。有關更多信息,請參見如何:向數據表中添加行。
?
TableAdapter.ClearBeforeFill
?確定數據表在您調用一個 Fill 方法之前是否被清空。
? TableAdapter 的更新方法
TableAdapter 使用數據命令讀取和寫入數據庫。TableAdapter 的初始 Fill(主)查詢是創建關聯數據表的架構的基礎,也是與 TableAdapter.Update 方法關聯的 InsertCommand、UpdateCommand 和 DeleteCommand 命令的基礎。這意味著調用 TableAdapter 的 Update 方法將執行最初配置 TableAdapter 時創建的語句,而不是使用“TableAdapter 查詢配置向導”添加的某個附加查詢。 當使用 TableAdapter 時,它實際執行與您通常要執行的命令相同的操作。例如,當調用適配器的 Fill 方法時,適配器將執行其 SelectCommand 屬性中的數據命令并使用數據讀取器(例如,SqlDataReader)將結果集加載到數據表中。與此類似,調用適配器的 Update 方法時,它為數據表中每條更改過的記錄執行相應的命令(在 UpdateCommand、InsertCommand 和 DeleteCommand 屬性中)。 注意
如果主查詢中有足夠的信息,生成 TableAdapter 時將默認創建 InsertCommand、UpdateCommand 和 DeleteCommand 命令。如果 TableAdapter 的主查詢不只是一個表的 SELECT 語句,設計器可能無法生成 InsertCommand、UpdateCommand 和 DeleteCommand。如果沒有生成這些命令,執行 TableAdapter.Update 方法時可能會收到一個錯誤。
? TableAdapter GenerateDbDirectMethods
除了 InsertCommand、UpdateCommand 和 DeleteCommand 之外,創建 TableAdapter 時還生成了一些可以直接在數據庫上執行的方法。可以直接調用這些方法(TableAdapter.Insert、TableAdapter.Update 和 TableAdapter.Delete)對數據庫中的數據進行操作。 如果不想創建這些直接方法,可將 TableAdapter 的“GenerateDbDirectMethods”屬性設置為 false(在“屬性”窗口中)。添加到 TableAdapter 的附加查詢是獨立的查詢 -- 它們不生成這些方法。 TableAdapter 對可空類型的支持
TableAdapter 支持可為空的類型 Nullable(Of T) 和 T?。有關 Visual Basic 中的可空類型的更多信息,請參見可能沒有已定義值的值類型。有關 C# 中的可空類型的更多信息,請參見使用可空類型(C# 編程指南)。
Dim northwindDataSet As New NorthwindDataSet()
Dim customersTableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter() customersTableAdapter.Fill(northwindDataSet.Customers)
?
C#? 復制代碼
NorthwindDataSet northwindDataSet = new NorthwindDataSet(); NorthwindDataSetTableAdapters.CustomersTableAdapter customersTableAdapter =
??? new NorthwindDataSetTableAdapters.CustomersTableAdapter(); customersTableAdapter.Fill(northwindDataSet.Customers);
?
J#? 復制代碼
NorthwindDataSet northwindDataSet = new NorthwindDataSet(); NorthwindDataSetCustomersTableAdapter customersTableAdapter =
??? new NorthwindDataSetCustomersTableAdapter(); customersTableAdapter.Fill(northwindDataSet.get_Customers());
? 關聯的數據表架構
創建 TableAdapter 時,將使用初始查詢或存儲過程定義 TableAdapter 的關聯 DataTable 的架構。通過調用 TableAdapter 的主 Fill 方法(此方法對 TableAdapter 的關聯 DataTable 進行填充),可以執行此初始查詢或存儲過程。任何對 TableAdapter 的主查詢的更改都會反映在關聯數據表的架構中。例如,如果將一列從主查詢中移除,該列也將從關聯的數據表中移除。如果 TableAdapter 的任何附加查詢使用的 SQL 語句將返回主查詢中沒有的列,設計器將嘗試同步主查詢和附加查詢之間的列更改情況。有關更多信息,請參見如何:編輯 TableAdapter。 TableAdapter 更新命令
TableAdapter 的更新功能依賴于有多少信息可用(基于 TableAdapter 向導中提供的主查詢)。例如,配置為從多個表(聯接)、標量值、視圖或聚合函數的結果中獲取值的 TableAdapter 最初創建時不具有將更新發送回基礎數據庫的能力。不過,可以在“屬性”窗口中手動配置 INSERT、UPDATE 及 DELETE 命令。 TableAdapter 查詢
?
與標準數據適配器不同,TableAdapter 可以包含多個查詢,以填充其關聯數據表。只要每個查詢所返回數據的架構與其關聯數據表的架構相同,您就可以根據應用程序的需要定義任意多個 TableAdapter 查詢。這樣就能加載滿足不同條件的數據。例如,如果應用程序包含一個 customers 表,您可以創建一個查詢,使用名字以某個特定字母開頭的所有客戶填充表,而另一個查詢則使用來自同一個州/省的所有客戶填充該表。若要用處于給定州/省的客戶填充 Customers 表,可以創建一個 FillByState 查詢,該查詢采用一個針對該州/省值的參數:SELECT * FROM Customers WHERE State = @State。可以通過調用 FillByState 方法并按照以下格式傳遞參數值來執行該查詢:CustomerTableAdapter.FillByState("WA")。有關更多信息,請參見如何:創建 TableAdapter 查詢。 除了那些能返回與 TableAdapter 的數據表具有相同架構的數據的查詢外,還可添加返回標量值(單值)的查詢。例如,即使返回的數據并不符合表的架構,用來返回客戶計數的查詢 (SELECT Count(*) From Customers) 對 CustomersTableAdapter 也是有效的。 ClearBeforeFill 屬性
TableAdapter 添加了一個 DataAdapter 基類所沒有的屬性。默認情況下,每次執行一個用來填充 TableAdapter 的數據表的查詢時,數據會被清除,只將該查詢的結果加載到表中。如果要將查詢返回的數據添加或合并到數據表的現有數據中,請將 TableAdapter 的 ClearBeforeFill 屬性設置為 false。無論是否清除數據,如果需要,都有必要顯式地將更新發送回數據庫。所以,在執行另一個填充表的查詢前,請記住保存任何對表中數據所做的更改。有關更多信息,請參見如何:使用 TableAdapter 更新數據。 TableAdapter 繼承
TableAdapter 通過封裝經過配置的 DataAdapter,擴展了標準數據適配器的功能。默認情況下,TableAdapter 從 Component 繼承,無法強制轉換為 DataAdapter 類。將 TableAdapter 強制轉換為 DataAdapter 將導致 InvalidCastException。若要更改 TableAdapter 的基類,可以在“數據集設計器”中的 TableAdapter 的 Base Class 屬性中鍵入從 Component 派生的類。 TableAdapter 的方法與屬性
TableAdapter 類不是 .NET Framework 的一部分,因此,不能在文檔或“對象瀏覽器”中查找它。它是在設計時使用前面提到的向導之一創建的。創建 TableAdapter 時為其分配的名稱基于正在使用的表的名稱。例如,基于數據庫中名為 Orders 的表創建 TableAdapter 時,此 TableAdapter 會被命名為 OrdersTableAdapter。可以在“數據集設計器”中使用 Name 屬性更改 TableAdapter 的類名稱。 以下是常用的 TableAdapter 方法和屬性: 成員? 說明?
TableAdapter.Fill
?用 TableAdapter 的 SELECT 命令的結果填充 TableAdapter 的關聯數據表。有關更多信息,請參見如何:使用數據填充數據集。
?
TableAdapter.Update
?將更改發送回數據庫。有關更多信息,請參見如何:使用 TableAdapter 更新數據。
?
TableAdapter.GetData
?返回一個用數據填充了的新 DataTable。
?
TableAdapter.Insert
?在數據表中創建新行。有關更多信息,請參見如何:向數據表中添加行。
?
TableAdapter.ClearBeforeFill
?確定數據表在您調用一個 Fill 方法之前是否被清空。
? TableAdapter 的更新方法
TableAdapter 使用數據命令讀取和寫入數據庫。TableAdapter 的初始 Fill(主)查詢是創建關聯數據表的架構的基礎,也是與 TableAdapter.Update 方法關聯的 InsertCommand、UpdateCommand 和 DeleteCommand 命令的基礎。這意味著調用 TableAdapter 的 Update 方法將執行最初配置 TableAdapter 時創建的語句,而不是使用“TableAdapter 查詢配置向導”添加的某個附加查詢。 當使用 TableAdapter 時,它實際執行與您通常要執行的命令相同的操作。例如,當調用適配器的 Fill 方法時,適配器將執行其 SelectCommand 屬性中的數據命令并使用數據讀取器(例如,SqlDataReader)將結果集加載到數據表中。與此類似,調用適配器的 Update 方法時,它為數據表中每條更改過的記錄執行相應的命令(在 UpdateCommand、InsertCommand 和 DeleteCommand 屬性中)。 注意
如果主查詢中有足夠的信息,生成 TableAdapter 時將默認創建 InsertCommand、UpdateCommand 和 DeleteCommand 命令。如果 TableAdapter 的主查詢不只是一個表的 SELECT 語句,設計器可能無法生成 InsertCommand、UpdateCommand 和 DeleteCommand。如果沒有生成這些命令,執行 TableAdapter.Update 方法時可能會收到一個錯誤。
? TableAdapter GenerateDbDirectMethods
除了 InsertCommand、UpdateCommand 和 DeleteCommand 之外,創建 TableAdapter 時還生成了一些可以直接在數據庫上執行的方法。可以直接調用這些方法(TableAdapter.Insert、TableAdapter.Update 和 TableAdapter.Delete)對數據庫中的數據進行操作。 如果不想創建這些直接方法,可將 TableAdapter 的“GenerateDbDirectMethods”屬性設置為 false(在“屬性”窗口中)。添加到 TableAdapter 的附加查詢是獨立的查詢 -- 它們不生成這些方法。 TableAdapter 對可空類型的支持
TableAdapter 支持可為空的類型 Nullable(Of T) 和 T?。有關 Visual Basic 中的可空類型的更多信息,請參見可能沒有已定義值的值類型。有關 C# 中的可空類型的更多信息,請參見使用可空類型(C# 編程指南)。
總結
以上是生活随笔為你收集整理的TableAdapter 概述的全部內容,希望文章能夠幫你解決所遇到的問題。