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()); |
四.效果截图