一.DataSet
Dataset是非串連資料訪問的核心。是一種資料容器。
Dataset包含兩類重要的元素:
1.零個或者多個關係(Relation)的集合
2.零個或者多個表格(DataTable)的集合
DataTable可以通過尋找特定行來減少與資料庫的互動次數。
從DataTable中尋找特定行:
1 DataRow[] matchRows = ds.Table["Products"].Select("class=34")
每個DataTable又包含以下元素:
1.行集合
2.子關係集合
3.列集合
4.父關係集合
5.列集合
6.DefaultView
GridView等資料來源可以是DataSet、DataTable、DataView等。
在GridView以DataView作為資料來源的時候,可以通過DataView.Sort和DataView.RowFilter來設定排序的條件式篩選(見下例)。
二.DataAdapter
DataAdapter是資料來源和Dataset的橋樑。
DataAdapter的主要方法:
1.Fill()
2.FillSchema()
執行SelectCommand中的查詢,但只擷取架構資訊。利用列名,資料類型,主鍵和約束關係等預配置DataTable。
3.Update()
檢查DataTable中的變化,並執行適當的InsertCommand,UpdateCommand,DeleteCommand操作為資料來源執行批次更新。
三.資料從資料庫到DataSet的過程
1.Connection對象通過連接字串建立與資料庫的連結。
2.設定Command對象的Connection,CommandText,CommandType屬性
3.設定DataAdapter的SelectCommand,InsertCommand,UpdateCommand,DeleteCommand等屬性
4.調用DataAdapter對象的Fill方法將DataAdapter的SelectCommand執行的查詢資料填充進DataSet
調用DataAdapter對象的update方法執行資料的更新操作。
四.DataAdapter和DataSet聯合使用一個例子
C# 1 protected void BindGridView()
2 {
3 string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["MyDemo"].ConnectionString;
4 SqlConnection conn = new SqlConnection(connStr);
5 SqlCommand com = new SqlCommand("SELECT * FROM Productions", conn);
6
7 SqlDataAdapter da = new SqlDataAdapter(com);
8 DataSet ds = new DataSet();
9 da.Fill(ds, "Productions");
10
11 DataColumn ComputedColumn = new DataColumn("ComputedColumn", typeof(int), "ProductionID+CategoryID");
12 ds.Tables["Productions"].Columns.Add(ComputedColumn);
13
14 DataView dv1 = ds.Tables["Productions"].DefaultView;
15
16 DataView dv2 = new DataView(ds.Tables["Productions"]);
17 dv2.Sort = "CategoryID DESC , ProductionName ASC";
18
19 DataView dv3 = new DataView(ds.Tables["Productions"]);
20 dv3.RowFilter="CategoryID > 1 AND LEN(ProductionName) > 5";
21
22 this.GridView1.DataSource = dv1;
23 this.GridView2.DataSource = dv2;
24 this.GridView3.DataSource = dv3;
25
26 this.DataBind();
27 }
清清楚楚asp.net系列學習部落格目錄
參考資料:Pro ASP.NET 3.5 in C# 2008