- 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();//创建为新的表格