- What is DataTable
用於儲存臨時數據的虛擬表( 有行row 有一行的單元格cell)
- Function about DataTable:(Rows[]行集合、Rows[][]值、dt.rows.Add(new object[]{和列順序一致}))/dt.Column.Add(列名,數值類型) dt.rows.remove/dt.rows.removeat/)
讀入數據,作為中介臨時儲存。(在畢設的系統開發時,充當中間人的角色)
How to use DataTable
引用命名空間
1 using System.Data;//對命名空間的使用,如果已添加,則在右側引用不用添加,若未添加,則需要在添加中添加,后在程序開始前Using 名稱空間
涉及的知識點:
1.namespace的作用:為了防止同名的沖突。(可以嵌套、可以重名、可以無名)

1 1 ///////////////////////////////////////// 普通的命名空間 2 2 namespace N1 // N1 為命名空間的名稱 3 3 { 4 4 // 命名空間中的內容,既可以定義變量,也可以定義函數,也可以有類 5 5 int a; 6 6 int Add(int left, int right) 7 7 { 8 8 return left + right; 9 9 } 10 public Class 類名 11 { 12 變量 13 方法(參數){方法體} 14 } 15 10 } 16 11 // /////////////////////////////////////命名空間可以嵌套 17 12 namespace N2 18 13 {int a; 19 14 int b; 20 15 int Add(int left, int right) 21 16 { 22 17 return left + right; 23 18 } 24 19 namespace N3 25 20 { 26 21 int c; 27 22 int d; 28 23 int Sub(int left, int right) 29 24 { 30 25 return left - right; 31 26 } 32 27 } 33 28 } 34 29 // ////////////////////////////////////// 同一個projiect中允許存在多個相同名稱的命名空間,編譯器最后會合合並 35 30 36 31 namespace N1 37 32 { 38 33 int Mul(int left, int right) 39 34 { 40 35 return left * right; 41 36 } 42 37 } 43 38 // ////////////////////////////////////////// 沒有名稱的命名空間(只在聲明該空間的文件中可訪問,訪問不用加名稱空間。其他文件不可見) 44 39 namespace 45 40 { 46 41 int a; 47 42 int Div(int left, int right) 48 43 { 49 44 if(0 == right) 50 45 exit(0); 51 46 return left / right; 52 47 } 53 48 }
2.使用自己建立的類,需要實例化才能使用

1 public class TestClass1//新建一個類 2 { 3 public int name { get; set; }//name 屬性 4 public void Add(int a, int b)//含有兩個參數的方法 5 { } 6 }
TestClass1 a = new TestClass1();//實例化自建類 a.name=2;//訪問類的屬性
創建表(實例化DataTable、類實例化之后才可以使用)
1 //創建一個空表 2 DataTable dataTable1 = new DataTable();//創建一個DataTable的對象,虛擬表 3 //創建一個有名字的表 4 DataTable datatable2 = new DataTable("NewTable","DataTable_Practice");//利用重載,設置表名、表創建的命名空
創建列(列類 DataColumn 需要實例化,dataTable的屬性:Column 方法Add(列的實例化對象) )
1 //創建一個空列,先實例化,后添加 2 DataColumn dataColumn = new DataColumn();//實例化列類(DataColumn) 3 dataTable1.Columns.Add(dataColumn);//將一個空列添加到DataTable 4 //創建一個帶有列名和列內數據類型的列,邊實例化 邊添加 5 dataTable1.Columns.Add("列名",typeof(string)); 6 //先實例化 后添加 7 DataColumn dataColumn1 = new DataColumn("列名", typeof(string)); 8 dataTable1.Columns.Add(dataColumn1);
創建行(利用DataTable的newRow方法創建,利用DataTable的屬性:Rows 方法:Add來創建Add(另一個表的Rows[i].ItemArry/具體的內容))
//創建空行 DataRow dataRow = dataTable1.NewRow();//與創建列不同,行的創建利用的DataTable的方法(行的類為Datarow) dataTable1.Rows.Add(); //通過行框架創建並賦值 dataTable1.Rows.Add("aaaa" new object[]{內容});(注意和列的定義相符合) //利用賦值另一個DataTable的值來創建 dataTable1.Rows.Add(datatable2.Rows[i].ItemArray);
row1(類型為DataRows) | column2(類型為DataColumn) | column3 | column4 |
row2(利用dt的newROws方法實例化並創建)(利用.Rows.Add()添加) | (利用new實例化) | (利用dt.column.Add()添加) |
對DataTable的賦值
1 //利用行的中列的位置賦值(類似數組) 2 DataRow dataRow = datatable2.NewRow();//創建了一行 3 dataRow[0] = 2;//對該行第一列賦值 4 //利用行中列的名稱進行賦值 5 dataRow["列名"] = 2;//對該行的名稱為“列名”的列賦值(datatable.column.add("列名",列的數據類型))即可創建一個有名的列 6 //對DataTable根據位置賦值 7 dataTable1.Rows[0][0] = 1;//對datatabe中第一行第一列賦值 8 //對DataTable 根據位置和列名進行賦值 9 dataTable1.Rows[0]["列名"] = 1;//對DataTable中第一行的列名為“列名‘進行賦值
從DataTable中取值
string name = dataTable1.Rows[0][0].ToString();//把DataTable中的第一個數字賦值給那么
從DataTable中篩選行(列)(DataTable的屬性;Select 、like /' 李'模糊查詢 、rows[] 表示一行 row[][] 表示一個數)
//選擇"列1"為空的行 DataRow[] dr = dataTable1.Select("列1=null"); //選擇列1 為5 的行的集合 DataRow[] dr1 = dataTable1.Select("列1=5"); //選擇列1包含'李"的行的集合 DataRow[] dt2 = datatable2.Select("列1 like '李'");
從DataTable中刪除行(Remove Removeat 兩個方法,和Select、Add一樣,datatable.rows.方法名)
1 //利用dataTable.rows.remove()方法刪除行 2 datatable2.Rows.Remove(datatable2.Rows[0]);//刪除第一行的數 3 //利用DataTable.rows.Removeat()方法刪除 4 datatable2.Rows.RemoveAt(0);//刪除第一行的數
//利用循環刪除多行時,應采用倒序,順序編號發生變化 5 for (int i = datatable2.Rows.Count; i > 0; i--) 6 { 7 datatable2.Rows.RemoveAt(i); 8 }
復制表
//先創建后復制 DataTable ta = new DataTable("表名"); ta = datatable2.Copy(); //邊創建邊復制 DataTable ta1 = datatable2.Copy(); //只復制格式不要數據——先復制后清空 DataTable dataTable3 = new DataTable(); dataTable3 = datatable2.Copy(); dataTable3.Clear(); //只復制格式不要數據——克隆 DataTable dataTable4 = datatable2.Clone(); //只要表中的一行 DataTable dataTable5 = datatable2.Copy(); dataTable5.Clear(); dataTable5.ImportRow(datatable2.Rows[0]);//加入另一表的第一行
表排序
DataTable table = new DataTable("排序表"); table.Columns.Add("ID列名",typeof(int));//ID列 table.Columns.Add("Name", typeof(string));//Name列 table.Columns.Add("Age", typeof(int));//Age列 table.Rows.Add(new object[] { 1, "李", 20 });//第一行(與列想對應) table.Rows.Add(new object[] { 2,"張",21});//第二行 //獲取表試圖 DataView dataView = table.DefaultView; //利用Sort屬性,排序 dataView.Sort = "ID DESC";//ID倒序 dataView.ToTable();//創建為新的表格