第九周学习笔记-ADO.Net中DataSet的应用
一、知识点描述
1、含义:DataSet是ADO.Net的断开式结构的核心组件,它可以用于多种不同的数据源,用于XML数据,或用于管理应用程序本地的数据。DataSet包含一个或多个DataTable对象的集合,这些对象由数据行和数据列以及主键、外键、约束和有关DataTable对象中数据的关系信息组成。
2、在ADO.Net中使用DataSet
①创建DataSet
DataSet dataSet = new DataSet();
②向DataSet中添加DataTable
声明数据表1,对应数据集的表集合中的第1张数据表;
DataTable Table1 = dataSet.Tables[0];
声明数据表2,对应数据集的表集合中的第2张数据表;
DataTable Table2 = dataSet.Tables[1];
③添加表间关系
在包含多个DataTable的对象的DataSet中,可以使用DataRelation对象来使一个表与另一个表相关,在多个表之间导航,以及从相关表中返回子行或者父行。
④浏览表间关系
DataRelation的一项主要功能就是在DataSet中从一个DataTable浏览到另一个。它使你能够在给定相关DataTable中的单个DataRow的情况下检索一个DataTable中的所有相关DataRow对象。
⑤使用DataSet事件
DataSet提供MergeFailed事件,该事件在所合并的DataSet对象的架构发生冲突时引发。
⑥在DataSet中使用XML
3、DataSet和数据绑定
①简单型数据绑定
与TextBox进行数据绑定
②复杂型数据绑定
与DataGridView进行数据绑定
二、思维导图

三、示例代码
1、载入树形图代码
SqlConnection sqlConnection = new SqlConnection();
sqlConnection.ConnectionString =
"Server=(local);Database=EduBase1;Integrated Security=sspi";
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandText = "SELECT * FROM tb_Room;" ;
+ "SELECT * FROM tb_Doctor;"
+ "SELECT * FROM tb_Patient;";
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();
sqlDataAdapter.SelectCommand = sqlCommand;
DataSet dataSet = new DataSet(); //声明并实例化数据集,用于保存查得的多张表;
sqlConnection.Open();
sqlDataAdapter.Fill(dataSet); //SQL数据适配器读取数据,并填充数据集;
sqlConnection.Close();
DataTable roomTable = dataSet.Tables[]; //声明科室数据表,对应数据集的表集合中的第1张数据表;
DataTable doctorTable = dataSet.Tables[];//声明医生数据表,对应数据集的表集合中的第2张数据表;
DataTable patientTable = dataSet.Tables[];//声明病人数据表,对应数据集的表集合中的第1张数据表;
DataRelation[] dataRelations = //声明数据关系数组;
{
new DataRelation
("Room_Doctor"
, roomTable.Columns["No"]
, doctorTable.Columns["RoomNo"]
, false)
, new DataRelation ("Doctor_Patient"
, doctorTable.Columns["No"]
, patientTable.Columns["DoctorNo"]
, false)
};
dataSet.Relations.AddRange(dataRelations);//将数据关系数组批量加入数据集的关系集合中;
this.trv_HospitalUnit.Nodes.Clear();
foreach (DataRow roomRow in roomTable.Rows)
{
TreeNode roomNode = new TreeNode();
roomNode.Text = roomRow["Name"].ToString();
this.trv_HospitalUnit.Nodes.Add(roomNode);
foreach (DataRow doctorRow in roomRow.GetChildRows("Room_Doctor")) {
TreeNode doctorNode = new TreeNode();
doctorNode.Text = doctorRow["Name"].ToString();
roomNode.Nodes.Add(doctorNode);
foreach (DataRow patientRow in doctorRow.GetChildRows("Doctor_Patient"))
{
TreeNode patientNode = new TreeNode();
patientNode.Text = patientRow["Name"].ToString();
patientNode.Tag = patientRow["No"];
doctorNode.Nodes.Add(patientNode);
}
}
}
2、树形图选中节点事件代码
if (this.trv_HospitalUnit.SelectedNode.Level == ) //若树形视图的选中节点的级别为3,即选中病人节点;
{
int patientNo = (int)this.trv_HospitalUnit.SelectedNode.Tag; //将树形视图的选中节点的标签转为整型,即可获得事先保存的病人编号;
SqlConnection sqlConnection = new SqlConnection();
sqlConnection.ConnectionString =
"Server=(local);Database=EduBase1;Integrated Security=sspi";
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandText = "SELECT * FROM tb_MedicalAdvice WHERE PatientNo=@PatientNo;";
sqlCommand.Parameters.AddWithValue("@PatientNo", patientNo);
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();
sqlDataAdapter.SelectCommand = sqlCommand;
DataTable medicalAdviceTable = new DataTable();
sqlConnection.Open();
sqlDataAdapter.Fill(medicalAdviceTable);
sqlConnection.Close();
this.dgv_Advice.DataSource = medicalAdviceTable;
this.dgv_Advice.Columns["No"].HeaderText = "医嘱";
this.dgv_Advice.Columns["PatientNo"].HeaderText = "病人编号";
this.dgv_Advice.Columns["PatientName"].HeaderText = "病人姓名";
this.dgv_Advice.Columns[this.dgv_Advice.Columns.Count - ].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
}
四、效果截图

第九周学习笔记-ADO.Net中DataSet的应用的更多相关文章
- 第八周学习笔记-ADO.Net中DataTable的应用
ADO.Net中DataTable的应用 一.知识点描述 1.概述:DataTable是一个临时保存数据的网格虚拟表(表示内存中数据的一个表),是ADO.Net库中的核心对象. 2.DataTabl ...
- 20165326 java第九周学习笔记
第九周学习笔记 URL类 属于java.net包 最基本三部分:协议(对象所在的Java虚拟机支持).地址(能连接的有效IP地址或域名).资源(主机上的任何一个文件) 常用构造方法 public UR ...
- 20179223《Linux内核原理与分析》第九周学习笔记
视频学习 进程调度与进程调度的时机分析 不同类型的进程有不同的调度需求 第一种分类: --I/O-bound:1.频繁的进行I/O:2.通常会花费很多时间等待I/O操作的完成 --CPU-bound: ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145304 Java第九周学习报告
20145304<Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是Java联机数据库的标准规范.定义了 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 学号 20175212 《Java程序设计》第九周学习总结
学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...
- 20175314 《Java程序设计》第九周学习总结
20175314 <Java程序设计>第九周学习总结 教材学习内容总结 根据课本的介绍下载了MySQL和Navicat for MySQL并成功对后者进行破解 MySQL客户端管理工具(如 ...
随机推荐
- npm --save-dev --save | -D -S区别
-S就是--save的简写,就行npm默认一个start的字段,你可以不必输入npm run start 而只需输入npm start,这两个效果是一样的.-D就是--save-dev 这样安装的包的 ...
- python实现列表去重的方法
>>> l=[,,,,,,] >>> list(set(l)) [, , , ] >>>
- CART回归树
决策树算法原理(ID3,C4.5) 决策树算法原理(CART分类树) 决策树的剪枝 CART回归树模型表达式: 其中,数据空间被划分为R1~Rm单元,每个单元有一个固定的输出值Cm.这样可以计算模型输 ...
- legend2---项目总结(legend2的意义)
legend2---项目总结(legend2的意义) 一.总结 一句话总结:总体来说还是化腐朽为神奇的,之前投了很多精力在学习上面,学的内容非常多,但是都记不住,尤其是英语,感悟也是没办法继续深悟,这 ...
- QSS 记录
1.border-style 属性分别有 none 定义无边框. hidden 与 "none" 相同.不过应用于表时除外,对于表,hidden 用于解决边框冲突. dotted ...
- keras神经网络做简单的回归问题
咸鱼了半个多月了,要干点正经事了. 最近在帮老师用神经网络做多变量非线性的回归问题,没有什么心得,但是也要写个博文当个日记. 该回归问题是四个输入,一个输出.自己并不清楚这几个变量有什么关系,因为是跟 ...
- sap快捷登录
利用程序SAPSHCUT.EXE 示例:sapshcut -type=Transaction -system=IDS -client=800 -user=barry -pw=123456 -l ...
- PDF 补丁丁 0.6.0.3288 版发布(修复“合并文件”功能的文件夹文件排序问题)
新的测试版修复了合并文件功能中添加名称带有“.”点号的文件夹时无法正常排序文件的问题. 使用合并文件功能的用户建议更新.
- bootstrap modal 监听滚动条事件
bootstrap modal 里面使用datetimepicker时间控件,滚动时,时间控件并不会隐藏,这是一个小bug,在组里改下,当滚动条滚动时,直接隐藏这个时间控件,$("#alar ...
- python 绑定方法
一.绑定方法与非绑定方法 1.绑定方法''' 绑定方法:绑定给谁就是给谁用的 1.凡是类中的方法和函数,都是绑定给对象使用的: 2.绑定方法都有自动传值的功能.传递进去的值,就是对象本身. 3.如果类 ...