學習了解DataAdapter類屬性
DataAdapter類代表了微軟數據訪問模型的一個新概念。DataAdapter類在ADO和DAO中并沒有真正的對應類,當然,可以認為ADO Command 對象和DAO QueryDef對象與DataAdapter對象多少有一些聯(lián)系,它們曾被刪除過。
DataAdapter對象充當數據庫和ADO.NET對象模型中非連接對象之間的橋梁。DataAdapter對象類的Fill方法提供了一種高效機制,用于將查詢結果引入DataSet或DataTable中,以便能夠脫機處理數據。還可以利用DataAdapter對象向數據庫提交存儲在DataSet對象中的掛起更改。
ADO.NET DataAdapter類公開了大量屬性,這些屬性實際上是Command對象。例如,SelectCommand屬性包含一個Command對象,該對象表示將用來填充DataSet對象的查詢。DataAdapter類還有UpdateCommand,InsertCommand和DeleteCommand等屬性,它們分別對應于用來向數據庫提交已修改數據行、新建數據行或被刪除數據行的Command對象。
這些Command對象提供了更新功能,在ADO和DAO的Recordset對象中,這些更新自動進行。例如,當在ADO中運行一個查詢以生成一個Recordset對象時,ADO的游標引擎就會詢問數據庫中有關此查詢的元數據,以確定結果來自哪里。然后ADO會使用該元數據建立更新邏輯,以將Recordset對象中的更改轉換為數據庫中的更改。
那么ADO.NET的DataAdapter對象為什么擁有單獨的UpdateCommand,InsertCommand和DeleteCommand屬性呢?這是為了允許開發(fā)人員定義自己的更新邏輯。ADO和DAO的更新功能都十分有限,DataAdapter類因為這兩種對象模型都將Recordset中的更改轉換為對數據庫中的表進行直接引用的操作查詢。DataAdapter類為了維護數據的安全性和完整性,許多數據庫管理員都限制對其數據庫中表的訪問,因此更改表內容的***途徑就是調用存儲過程。#t#
ADO和DAO不知道如何使用存儲過程提交更改,也沒有提供可讓開發(fā)人員指定自己更新邏輯的機制。ADO.NET DataAdapter則可以。利用DataAdapter對象,可以設置UpdateCommand,InsertCommand以及DeleteCommand屬性來調用存儲過程,c如前文所述,DataAdapter類會填充DataSet對象中的表,而且能讀取緩存的更改并將其提交給數據庫。DataAdapter有一些支持屬性,可用來跟蹤在什么位置發(fā)生了什么操作。TableMappings集合就是其中的一個屬性,它用于跟蹤數據庫中的哪個表與DataSet對象中的哪個表相對應。每個表映射都有一個用于映射列的類似屬性,稱為ColumnMapping集合。