一、知识点描述
1、DataTable 表示一个内存内关系数据的表,可以独立创建和使用,也可以由其他 .NET Framework 对象使用,最常见的情况是作为 DataSet 的成员使用。
2、创建DataTable
①使用相应的DataTable构造函数创建DataTable对象。
②使用Add方法将其添加到DataTable对象的Tables集合中,将其添加到DataSet中。
③使用DataAdapter对象的Fill方法方法在DataSet中创建。
3、按名称引用表中的列、关系和约束是区分大小写的。 因此,一个表中可以存在两个或两个以上名称相同(但大小写不同)的列、关系或约束。
4、在DataSet中创建DataTable之后,可以对数据表中的数据进行增、删、改、查等操作。
二.思维导图
三.运行代码:
创建对象:
创建方法有两种:1.使用DataTable类的构造函数创建DataTable对象
1 | DataTable table = new DataTable( ) |
2.调用DataSet的Tables对象的Add方法创建DataTable对象
DataSet dataset = new dataSet( );
DataTable table = dataset.Tables.Add(“MyTableName”);
在DataTable对象中添加列:调用DataTable对象的Column中的Add方法添加列
在DataTable对象中创建行:由于DataTable对象的每一行都是一个DataRow对象,所以创建行时可以利用DataTable对象的NewRow方法创建一个DataRow对象,并设置新行中各列的数据,然后利用Add方法将DataRow对象添加到表中
将SQL Server数据库中的表填充到DataTable对象中:有两种方式:
1.使用fill方法填充DataTable
1 2 3 4 5 6 7 8 9 10 11 12 | private void useDataTableByFill() { SqlConnection myConnection = newSqlConnection(ConfigurationManager.ConnectionStrings["sqlConnectionString"].ConnectionString); DataTable myDataTable = new DataTable(); SqlDataAdapter myDp = newSqlDataAdapter("select * from authors", myConnection); myDp.Fill(myDataTable); GridView1.DataSource =myDataTable.DefaultView; GridView1.DataBind();
myConnection.Dispose(); myDp.Dispose(); } |
2.使用DataReader方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private void useDataTableByDataReader() { SqlConnection myConnection = newSqlConnection(ConfigurationManager.ConnectionStrings["sqlConnectionString"].ConnectionString); DataTable myDataTable = new DataTable(); SqlCommand myCommand = newSqlCommand("select * from authors", myConnection); myConnection.Open(); SqlDataReader dr =myCommand.ExecuteReader(CommandBehavior.CloseConnection); myDataTable.Load(dr); GridView1.DataSource =myDataTable.DefaultView; GridView1.DataBind(); dr.Close(); dr.Dispose(); myCommand.Dispose(); } |
运行示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(); //声明并实例化SQL数据适配器; sqlDataAdapter.SelectCommand = sqlCommand; //将SQL数据适配器的查 this.CourseTable = new DataTable(); //实例化本窗体 this.CourseTable.TableName = "StudentScore"; //设置课程数据表的表名; sqlConnection.Open(); // sqlDataAdapter.Fill(this.CourseTable); //SQL数据适配器读 DataColumn rowIdColumn = new DataColumn(); //声明并实例化数据 rowIdColumn.ColumnName = "RowID"; //设置数据列 rowIdColumn.DataType = typeof(int); //设置数据列的 rowIdColumn.AutoIncrement = true; //设置数据列 rowIdColumn.AutoIncrementSeed = 1; //设置数据列的 rowIdColumn.AutoIncrementStep = 1; //设置数据列的 this.CourseTable.Columns.Add(rowIdColumn); //数据列加入本窗体的课 sqlCommand.CommandText = "SELECT S.No,S.Name AS SName,C.Name AS CName,SS.TotalScore" + " FROM tb_Student AS S " + " JOIN tb_StudentScore AS SS ON S.No=SS.StudentNo" + " JOIN tb_Course AS C ON SS.CourseNo=C.No;"; //指定SQL命令的命令文本; sqlDataAdapter.Fill(this.CourseTable); //SQL数据适配器读 sqlConnection.Close(); |
四.运行结果