ADO.Net中DataSet的应用(知识点描述、思维导图、示例代码、效果截图)

一.知识点描述

ADO.NET是Microsoft公司推出的.NET框架中用于数据访问的组件,ADO. NET是.Net FrameWork SDK 中用以操作数据库的类库的总称。而DataSet 类则是ADO. NET中最核心的成员之一,也是各种开发基于.Net平台程序语言开发数据库应用程序最常接触的类。之所以DataSet类在ADO. NET中具有特殊的地位,是因为DataSet在ADO. NET实现从数据库抽取数据中起到关键作用,在从数据库完成数据抽取后,DataSet 就是数据的存放地,它是各种数据源中的数据在计算机内存中映射成的缓存,所以有时说DataSet可以看成是一个数据容器。同时它在客户端实现读取、更新数据库等过程中起到了中间部件的作用(Da taReader只能检索数据库中的数据)。本文针对ADO. NET中的DataSet, 谈谈本人在开发设计应用中的实践和体会。

DataSet,这是从数据源检索数据的内存中缓存是 ADO.NET 体系结构的主要组件。DataSet包含的集合DataTable对象,可以互相关联起来与DataRelation对象。 此外可以强制实施中的数据完整性DataSet通过使用UniqueConstraint和ForeignKeyConstraint对象。

首先是在ADO.net中的关系:Connection_____Command____DataAdapter____Dataset  _____Datareader 

● DataSet 是放在内存中的,对DataSet中数据的修改并不直接反应到数据库,要通过 DataAdapter 的 Update 方法更新回数据库

● DataSet相当你用的数据库; DataTable相当于你的表。一个 DataSet 可以包含多个 DataTable

 DataSet 由表、关系和约束的集合组成。

二.思维导图

 

三.示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
SqlConnection sqlConnection = new SqlConnection();                                             
            sqlConnection.ConnectionString =
                "Server=(local);Database=EduBaseDemo;Integrated Security=sspi";                            
            SqlCommand sqlCommand = new SqlCommand();                                                       
            sqlCommand.Connection = sqlConnection;                                                        
            sqlCommand.CommandText =                                                                     
                "SELECT * FROM tb_Department;"                                                             
                "SELECT * FROM tb_Major;"
                "SELECT * FROM tb_Class;";                                          
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                          
            sqlDataAdapter.SelectCommand = sqlCommand;                                                   
            DataSet dataSet = new DataSet();                                                                
            sqlConnection.Open();                                                                         
            sqlDataAdapter.Fill(dataSet);                                                                  
            sqlConnection.Close();                                                                         
            DataTable departmentTable = dataSet.Tables[0];                                                 
            DataTable majorTable = dataSet.Tables[1];                                                     
            DataTable classTable = dataSet.Tables[2];                                                       
            DataRelation[] dataRelations =                                                                  
            {
                new DataRelation                                                                           
                    ("Department_Major"                                                                 
                    , departmentTable.Columns["No"]                                                      
                    , majorTable.Columns["DepartmentNo"]                                                 
                    false)                                                                    
                new DataRelation                                                                        
                    ("Major_Class"                                                                          
                    , majorTable.Columns["No"]                                                           
                    , classTable.Columns["MajorNo"]                                                    
                    ,false)                                                                            
            };
            dataSet.Relations.AddRange(dataRelations);                                                  
            this.trv_EducationUnit.Nodes.Clear();                                                     
            List<TreeNode> treeNodes = new List<TreeNode>();                                          
            foreach (DataRow departmentRow in departmentTable.Rows)                                        
            {
                TreeNode departmentNode = new TreeNode();                                                  
                departmentNode.Text = departmentRow["Name"].ToString();                                     
                treeNodes.Add(departmentNode);                                                              
                foreach (DataRow majorRow in departmentRow.GetChildRows("Department_Major"))                
                {
                    TreeNode majorNode = new TreeNode();                                                   
                    majorNode.Text = majorRow["Name"].ToString();                                           
                    departmentNode.Nodes.Add(majorNode);                                                   
                    foreach (DataRow classRow in majorRow.GetChildRows("Major_Class"))                     
                    {
                        TreeNode classNode = new TreeNode();                                             
                        classNode.Text = classRow["Name"].ToString();                                    
                        classNode.Tag = classRow["No"];                                                   
                        majorNode.Nodes.Add(classNode);                                                    
                    }
                }
            }
            this.trv_EducationUnit.Nodes.AddRange(treeNodes.ToArray());

四.效果截图

 

posted @ 2018-11-21 15:21  黄百万  阅读(404)  评论(0编辑  收藏  举报