vb.net數據集(Datasets)的概念。本站提示廣大學習愛好者:(vb.net數據集(Datasets)的概念)文章只能為提供參考,不一定能成為您想要的結果。以下是vb.net數據集(Datasets)的概念正文
1.根本概念
數據集是一種離線了的緩存存儲數據,它的構造和數據庫一樣,具有表格、行、列的一種層次構造,另外還包括了為數據集所定義的數據間的約束和關聯關系。
用戶可經過.NEt框架的命名空間(NameSpace)來創立和操作數據集。
用戶可以經過一些諸如屬性(properties)、集合(collections)這些規范的構成來理解Dataset這個概念。如:
(1)數據集(DataSet)包括數據表格的Tables這個集合以及relation的"Relations"集合。
(2)DataTable類包括了數據表格row的"Rows"集合,數據columns的"Column"集合,以及數據relation的"ChildRelations"和"ParentRelations"集合。
(3)DataRow類包括"RowState"屬性,這些值是用來顯示數據表格初次從數據庫被加載後能否被修正過,這個屬性的值可以為:"Deleted"、"Modified"、"New"以及"Unchanged"。
2.定義(Type)和未定義(Untyped)的數據集
數據集有定型的和未定型的之分,定型的數據集是根本的DataSet類的一個子類,並且含有圖表(.xsd文件),它用來描繪數據集所擁有的表格的構造。這些圖表文件,包括了表的名字和列名、列所代表的數據的類型信息,以及數據間的約束關系。而一個未定型的數據集則沒有這些圖表的描繪。
在順序中用戶可以運用恣意兩品種型的數據集,但是,定型的數據集可以使得用戶對數據的操作愈加明了,並且可以增加一些不用要的錯誤,定型的數據集可以生成一些對象模型,這些模型的第一層次的類(first-class)就是數據集所包括的表和列,假定用戶正在對一個定型的數據集停止操作,則可以用如下的語法來指向一個列。
'指向表titles第一行的title_id列
s=dsPub1.titles(0).title_id
但是假如用戶是在操作一個未定型的數據集的話,就需求這樣編寫代碼了:
'指向表titles第一行的title_id列
s=dsPubs1.Tables("titles")(0).Columns(title_id")
運用定型類不但可以使代碼編制起來愈加容易,而且,這種定型類的語法還為用戶提供了反省代碼正確與否的功用,增加了在指向數據集成員值時代碼的錯誤率。
3.關系表(Related Tables)和關系對象(Related Objects)
假如數據集中包括了多張表,這些表之間能夠具有相關聯的關系,但是,數據集不象數據庫,它並沒有關於關聯關系的相關信息,所以當用戶在處置關系表的時分,可以創立一些關聯(relations)來描繪這些在數據集中各個表之間的關聯關系。關聯關系可以經過一些代碼,人為地從父行(parent rows)到相關的子行(child rows)。或許從子行再前往到父行。
例如,上面這個關於學校課程設置的例子,有一個關於教員的一個表格,如下表:
其中數據集中能夠還包括另一張關於課程信息的表,這張表包括了教員的ID,並把它作為一個外約束鍵(foreign key),如下表:
由於每個教師不能夠只教一門課,所以在課程描繪表和教員表之間就存在一種一對多的關系。舉一個例子,假定教員i777(李四)教2門課,則可以用數據的關聯(data relations)把一個數據表的某個特指的行指向另外一個數據表的一個列,這樣就可以在這兩個表之間雙向地停止查詢導航,例如,用戶可以從一行描繪張三教員的行,閱讀到描繪它教的課這一行,反之,也可以從描繪課程Science999(生物)的行閱讀到描繪教這門課的教員張三的這一行。
4.更新數據集和數據存儲
當用戶改動數據集中的數據時,這些改動將要被重新寫回到數據庫中,類"DataRow"是用來對獨自的記載停止操作的,其中它包括屬性"RowState",它的值是用來表示自從數據從數據庫中第一次被調用當前,行是怎樣變化的,該屬性的值可以為:"Deleted"、"Modified"、"New"以及"Unchanged"。
為了把這些數據集的變化寫回到數據庫中,用戶可以調用辦法"Update",這個辦法將會訪問"RowState"的屬性值,並且決議怎樣對數據庫停止一系列的操作,如add,edit,delete,將都會被運轉。