先構建一個結構與用戶請求數據結構相同的DataTable,而後將用戶的請求數據填充到構建好的DataTable中,最後將DataTable添加到DataSet中。數據庫
DataTable,,DataColumn,DataRow 深刻研究數據結構
DataTable是內存中的一個關係數據表,能夠獨立建立使用,也能夠做爲DataSet的一個成員使用!this
如何將DataTable做爲DataSet的一個成員使用:
首先建立一個DataTable對象,其次經過使用Add方法將其添加到DataSet對象的Tables集合中
示例:
DataSet dsClass = new DataSet(); //建立一個新的空班級DataSet
DataTable dtClass = new DataTable("Class"); //建立班級表
dsClass.Tables.Add(dtClass); //將班級表添加到DataSet中
若是沒有指定DataTable名稱時把DataTable添加到DataSet中,該表會獲得一個從「0」開始遞增的默認表名.net
剛開始建立的表沒有表結構,要定義表的結構,必須建立DataColumn對象並將其添加到表的Columns集合中。在爲DataTable定義告終構以後,經過DataRow對象將數據添加到表的Rows集合中對象
DataColumn排序
DataColumn是建立DataTable的基礎,經過向DataTable中添加一個或多個DataColumn對象來定義DataTable的結構。DataColumn有一些經常使用屬性用於對輸入數據的限制,例如:數據類型,數據長度,默認值。索引
DataColumn的經常使用屬性
AllowDBNull 是否容許空值
ColumnName 存儲的數據類型
DataType 存儲的數據類型
MaxLength 獲取或設置文本列的最大長度
DafaultValue 默認值
Table 所屬的DataTable的名稱
Unique DataColumn的值是否惟一內存
定義DataColumn有兩種方法,
方法一:
//建立班級名稱列
DataColumn className = new DataColumn();
className.ColumnName = "ClassName";
className.DataType = System.Type.GetType("System.String");
className.MaxLength = 50;開發
//建立班級名稱列
DataColumn className = new DataColumn("ClassName",typeof(string));
className.MaxLength = 50;string
DataRow
DataRow表示DataTable中包含的實際數據,咱們能夠經過DataRow將數據添加到用DataColumn定義好DataTable中。
//建立班級名稱列
DataColumn className = new DataColumn("ClassName",typeof(string));
className.MaxLength = 50;
//建立一個新的數據行
DataRow drClass = dtClass.NewRow();
drClass["className"] = this.txtClassName.Text.Trim();
如何自定義DataSet
1.建立DataSet對象
2.建立DataTable對象
3.建立DataColumn對象構建表結構
4.將建立好的表結構添加到表中
5.建立DataRow對象新增數據
6.將數據插入到表中
7.將表添加到DataSet中
示例:
//建立一個新的空班級DataSet
DataSet dsClass = new DataSet();
//建立班級表
DataTable dtClass = new DataTable("Class");
//建立班級名稱列
DataColumn dcClassName = new DataColumn("ClassName",typeof(string));
className.MaxLength = 50;
//建立年級ID列
DataColumn dcGradeID = new DataColumn(GradeID",typeof(int));
//將定義好列添加到班級表中
dtClass.Columns.Add(dcClassName);
dtClass.Columns.Add(dcGradeID);
//建立一個新的數據行
DataRow drClass = dtClass.NewRow();
drClass["className"] = this.txtClassName.Text.Trim();
drClass["gradeID"] = objGrade.GetGradeIDByGradeName(this.cboGrade.Text.Trim());
//將新的數據行插入班級表中
dtClass.Rows.Add(drClass);
//將班級表添加到DataSet中
dsClass.Tables.Add(dtClass);
如何獲取DataSet中的數據
從DataSet中獲取數據有兩種方式:
1.第一種方式是經過指定DataSet中的具體DataTable的某行某列來獲取數據。
步驟:
1.經過表名,從DataSet中獲取指定的DataTable
2.經過索引,從DataTable中獲取指定的DataRow
3.經過列名,從DataRow中獲取指定列的數據
例:
//獲得班級名稱
dsClass.Table["Class"].Row[0]["ClassName"];
//獲得年級ID
dsClass.Tables["Class"].Row[0]["GradeID"]
2.另外一種方式是將DataSet中的數據直接綁定到數據展現控件上。
咱們通常都須要對從DataSet中提取出來的數據作一些簡單的修飾,如隱藏特定列,按照某列排序。其實很簡單,.net爲咱們提供了一個DataView對象,它能夠像數據庫中的視圖同樣幫助咱們創建DataSet中數據對應的不一樣視圖。(一個DataTable能夠動態生成多個DataView)
DataView
DataView爲咱們提供DataTable的動態視圖,並能夠對動態生成的視圖中的數據進行排序、笪選等操做,它與數據庫中的視圖相似,惟一不一樣的是它沒法提供關聯DataTable的視圖,它不能排除原表中存在的列,也不能向原表中追加不存在的列
示例:
//過濾掉用戶狀態爲非活動的學員
//對過過濾後的學員信息以學員名稱降序排序
DataSet dsStudent = new DataSet();
DataView dvStudent = new DataView();
dvStudent.Table = dsStudent.Tables["studentTable"];
dvStudent.RowFilter = "UserState = '活動'";
dvStudent.Sort = "StudentName DESC";
DataView幾個經常使用的屬性:
Table 用於獲取或設置源DataTable
Sort 獲取或設置DataView的一個或多個排序列以及排序順序
RowFilter 獲取或設置用於篩選在DataView中查看哪些行的表達式
Count 在應用RowFilter後,獲取DataView中的行數
經驗:在開發中若是須要對DataGrigView展現的數據進行動態篩選或排序時,咱們最好使用DataTable的DefaultView(默認視圖)屬性來獲得DataTable的視圖,這樣咱們就能夠減小實例化DataView對象的步驟,以及獲取DataView對象原DataTable的過程。DataTable dtStudent = (DataTable)dataGridView.DataSource;dtStudent.Tables["studentTable"].DefaultView.RowFilter = "UserState='活動'";