DataSet類是ADO.NET中最核心的成員之一,也是各種開發(fā)基于.Net平臺(tái)程序語(yǔ)言開發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序最常接觸的類。每一個(gè)DataSet都有很多個(gè)DataTables和Relationships。RelationShip應(yīng)該也是一種表,特殊的是,這個(gè)表只是用來(lái)聯(lián)系兩個(gè)數(shù)據(jù)表的。每一個(gè)DataTable都有很多datarows和datacols, 也包括ParentRelations,ChildRelations 和一些限制條件像主鍵不可以重復(fù)的限制。
DataSet每一行有一個(gè)RowState屬性。主要是反映當(dāng)前行是否已經(jīng)被刪掉了,被更新了,還是本沒變。有如下的幾個(gè)選項(xiàng): Deleted, Modified, New, and Unchanged。
對(duì)DataSet的任何操作,都是在計(jì)算機(jī)緩存中完成的。
在從數(shù)據(jù)庫(kù)完成數(shù)據(jù)抽取后,DataSet就是數(shù)據(jù)的存放地,它是各種數(shù)據(jù)源中的數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中映射成的緩存,所以有時(shí)說(shuō)DataSet可以看成是一個(gè)數(shù)據(jù)容器。
DataSet對(duì)象是一個(gè)可以用XML形式表示的數(shù)據(jù)視圖,是一種數(shù)據(jù)關(guān)系視圖。
DataSet使用方法一般有三種:
1.把數(shù)據(jù)庫(kù)中的數(shù)據(jù)通過DataAdapter對(duì)象填充DataSet
DataAdapter填充DataSet的過程分為二步:首先通過DataAdapter的SqlCommand屬性從數(shù)據(jù)庫(kù)中檢索出需要的數(shù)據(jù)。SqlCommand其實(shí)是一個(gè)Command對(duì)象。然后再通過DataAdapter的Fill方法把檢索來(lái)的數(shù)據(jù)填充DataSet。
2.通過DataAdapter對(duì)象操作DataSet實(shí)現(xiàn)更新數(shù)據(jù)庫(kù)
DataAdapter是通過其Update方法實(shí)現(xiàn)以DataSet中數(shù)據(jù)來(lái)更新數(shù)據(jù)庫(kù)的。當(dāng)DataSet實(shí)例中包含數(shù)據(jù)發(fā)生更改后,此時(shí)調(diào)用Update方法,DataAdapter 將分析已作出的更改并執(zhí)行相應(yīng)的命令(INSERT、UPDATE 或 DELETE),并以此命令來(lái)更新數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
3. 把XML數(shù)據(jù)流或文本加載到DataSet
DataSet中的數(shù)據(jù)可以從XML數(shù)據(jù)流或文檔創(chuàng)建。加載XML數(shù)據(jù)流和文檔到DataSet中是可使用DataSet對(duì)象的ReadXml方法。
數(shù)據(jù)綁定分成二類:簡(jiǎn)單型數(shù)據(jù)綁定和復(fù)雜型數(shù)據(jù)綁定。適用于簡(jiǎn)單型數(shù)據(jù)綁定組件一般有Lable、TextBox等,適用于復(fù)雜性數(shù)據(jù)綁定的組件一般有DataGrid、ListBox、ComboBox等。
簡(jiǎn)單型數(shù)據(jù)綁定一般使用這些組件中的DataBindings屬性的Add方法把DataSet中某一個(gè)DataTable中的某一行和組件的某個(gè)屬性綁定起來(lái),從而達(dá)到顯示數(shù)據(jù)的效果。
比如:textBox1.DataBindings.Add ( "Text" , dsDataSet1, " Customers. CustomerID ") ;
復(fù)雜性數(shù)據(jù)綁定一般是設(shè)定組件的DataSource屬性和DisplayMember屬性來(lái)完成數(shù)據(jù)綁定的。DataSource屬性值一般設(shè)定為要綁定的DataSet,DisplayMember屬性值一般設(shè)定為要綁定的數(shù)據(jù)表或數(shù)據(jù)表中的某一列。
比如:dataGrid1.DataSource = dsDataSet1 ;
dataGrid1.DataMember = " Customers " ;
DataSet的屬性Tables可以獲取該DATASET中表的數(shù)量:DataSet.Tables.Count
DataSet的Tables是一個(gè)Table數(shù)組,指定其中的一個(gè)表:DataSet.Tables[i];//i為
Table在數(shù)組序列中的位置 或 DataSet.Tables["表名"];
通過Table的Rows對(duì)象組的Count獲取該表的記錄數(shù):DataSet.Tables[i].Rows.Count;
獲取列數(shù):DataSet.Tables[i].Columns.Count;