1.思维导图

2.知识点描述

(1)介绍

DataSet可以看做是一个内存中的数据库,包括表、数据行、数据列以及表与表之间 的关系。创建一个DataSet后,它就可以单独存在,不需要一直保持和数据库的连接。应用程序需要数据时,可以直接从内存中的DataSet中读取数据。

DataSet可以包含多个表,这些表构成了数据表集合DataTableCollection,其中的每个表都是一个DataTable对象,每个表又包括数据行DataRow和列DataColumn,所有的行构成数据行集合DataRowCollection,所有的列构成数据列集合DataColumnCollection。DataSet还可以包含表与表之间的关系DataRelation。DataRelation表示数据集中DataTable之间的关系。可以用来保证执行完整性约束、数据级联。

(2)创建DataSet对象:

DataSet dataset=new DataSet();

(3)通过DataAdapter对象存储数据

SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();
sqlDataAdapter.SelectCommand = sqlCommand;
DataSet dataSet = new DataSet();
sqlConnection.Open();
sqlDataAdapter.Fill(dataSet);
sqlConnection.Close();

3.应用举例

树形图(使用treeview控件分级并显示数据)

(1)连接数据库

SqlConnection sqlConnection = new SqlConnection();sqlConnection.ConnectionString ="Server=(local);Database=DB_Equipment;Integrated Security=sspi";SqlCommand sqlCommand = new SqlCommand();sqlCommand.Connection = sqlConnection;sqlCommand.CommandText="SELECT * FROM tb_classifyone;"+ "SELECT * FROM tb_classifytwo;"+ "SELECT * FROM tb_classifythree;";

(2)声明并实例化数据集,用于保存查得的多张表

SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();sqlDataAdapter.SelectCommand = sqlCommand;DataSet dataSet = new DataSet();sqlConnection.Open();sqlDataAdapter.Fill(dataSet);sqlConnection.Close();DataTable classifyoneTable = dataSet.Tables[0];DataTable classifytwoTable = dataSet.Tables[1];DataTable classifythreeTable = dataSet.Tables[2];

(3)设置分级关系(节点)

DataRelation[] dataRelations ={new DataRelation ("classifyone_classifytwo", classifyoneTable.Columns["No"], classifytwoTable.Columns["ClassifyoneNo"], false), new DataRelation("classifytwo_classifythree", classifytwoTable.Columns["No"], classifythreeTable.Columns["ClassifytwoNo"], false)};dataSet.Relations.AddRange(dataRelations);foreach (DataRow classifyoneRow in classifyoneTable.Rows){TreeNode classifyoneNode = new TreeNode();classifyoneNode.Text = classifyoneRow["Name"].ToString();classifyoneNode.Tag = classifyoneRow["No"];this.trv_classify.Nodes.Add(classifyoneNode);foreach (DataRow classifytwoRow in classifyoneRow.GetChildRows("classifyone_classifytwo")){TreeNode classifytwoNode = new TreeNode();classifytwoNode.Text = classifytwoRow["Name"].ToString();classifytwoNode.Tag = classifytwoRow["No"];classifyoneNode.Nodes.Add(classifytwoNode);foreach (DataRow classifythreeRow in classifytwoRow.GetChildRows("classifytwo_classifythree")){TreeNode classifythreeNode = new TreeNode();classifythreeNode.Text = classifythreeRow["Name"].ToString();classifythreeNode.Tag = classifythreeRow["No"];classifytwoNode.Nodes.Add(classifythreeNode);}}}

(4)读取数据

if (this.trv_classify.SelectedNode.Level == 2){int ClassifythreeNo = (int)this.trv_classify.SelectedNode.Tag;SqlConnection sqlConnection = new SqlConnection();sqlConnection.ConnectionString ="Server=(local);Database=DB_Equipment;Integrated Security=sspi";SqlCommand sqlCommand = new SqlCommand();sqlCommand.Connection = sqlConnection;sqlCommand.CommandText = "SELECT EquipmentNo,EquipmentName,Quantity FROM tb_inventory WHERE ClassifythreeNo=@ClassifythreeNo;";sqlCommand.Parameters.AddWithValue("@ClassifythreeNo", ClassifythreeNo);SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();sqlDataAdapter.SelectCommand = sqlCommand;DataTable inventoryTable = new DataTable();sqlConnection.Open();sqlDataAdapter.Fill(inventoryTable);sqlConnection.Close();this.dgv_inventory.DataSource = inventoryTable;this.dgv_inventory.Columns[this.dgv_inventory.Columns.Count - 1].AutoSizeMode =DataGridViewAutoSizeColumnMode.Fill;}

运行结果图

转载于:https://www.cnblogs.com/JIALIH-H/p/9926145.html

ADO.Net中DataSete的应用相关推荐

  1. 深入分析ADO.NET中的DataSet对象

    ADO.NET是.net Framework SDK中用以操作数据库的类库的总称.而DataSet类则是ADO.NET中最核心的成员之一,也是各种开发基于.Net平台程序语言开发数据库应用程序最常接触 ...

  2. ADO.NET 中的表达式

    发布日期: 1/11/2005 | 更新日期: 1/11/2005 John Papa 利用 ADO.NET,使得数据库中关系的管理更为容易.您可以向数据存储返回一系列行集合并在 DataSet 内将 ...

  3. ADO.NET中的五个主要对象介绍及使用

    对象说明: 1.Connection 对象    Connection 对象主要是开启程序和数据库之间的连结.没有利用连结对象将数据库打开,是无法从数据库中取得数据的.这个物件在ADO.NET 的最底 ...

  4. ADO.net 中数据库连接方式

    ADO.net 中数据库连接方式 在MSDN中,.net的数据库连接字符串都有详细的说明,我这里以代码范例的方式罗列一些,具体的每一项代表的意义可以参看MSDN. ADO.net 中数据库连接方式(微 ...

  5. ADO.NET中SQL Server数据库连接池

    实际上,大多数应用程序仅使用一个或几个不同的连接配置. 这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭. 为了使打开的连接成本最低,ADO.NET 使用称为连接池的优化方法. 连接池减少 ...

  6. 浅谈ADO.NET中的五个主要对象

    ADO.NET 对象模型中有五个主要的组件,分别是Connection 对象.Command 对象.DataSetCommand.DataSet 以及DataReader.这些组件中 负责建立联机和数 ...

  7. ADO.NET中SqlCommand对数据库操作

    我们要不断地进行数据库的读写,那么ExecuteNonQuery(),ExecuteReader()与ExecuteScalar()就是我们在对数据库进行操作时要用到的,下面我来依次认识一下:     ...

  8. ADO.NET中的五个主要对象

    Connection:主要用来开启程序和数据库之间的连接,没有利用Connection对象连接数据库,是无法从数据库中取得数据的.Close()和Dispose()的区别就是Close以后还可以Ope ...

  9. ADO.NET中在C/S模式中使用的连接池

    前几天同事问我一个问题,一种CS架构的程序,直接把SQL Server作为服务端,每个客户端直接连接数据库操作,如果客户端打开的数量过多时SQL Server的连接数将会特别高,数据库端形成性能瓶颈, ...

最新文章

  1. 编译安装Ruby 1.9.3 安装CentOS
  2. 2019年python就业前景_2019年Python数据挖掘就业前景前瞻
  3. yum 下载全量依赖 rpm 包及离线安装(终极解决方案)
  4. java限制数字_是否存在将我的通用方法限制为数字类型的约束?
  5. hibernate 与 spring 松散配置的问题
  6. 【软件开发底层知识修炼】二十八 C/C++中volatile的作用
  7. Python Pytest中fixture之yield唤醒teardown和终结函数addfinalizer
  8. Python笔记-方差分析之多因素方差分析
  9. python如何设置窗口保持显示_如何保持Python脚本输出窗口打开?
  10. Java 按字节获得字符串(中文)长度
  11. 【考证】大一规划、考证大军、水水水!
  12. 私人影院音响效果如何有效提升?
  13. 周记——20150817
  14. 右键桌面的计算机图标管理没用,计算机桌面图标消失了,鼠标右键没有响应
  15. 日历算法学习总结——公历
  16. google play连接超时_谷歌Play多年来一直传播高级安卓恶意软件,并曾被用于间谍活动!...
  17. OpenCV基础矩阵求解解析笔记
  18. 因疫情影响,传苹果下一代iPhone发布将推后一个月
  19. 织梦dedecms模板安装过程的那点事儿
  20. 岭南学院python课程作业4

热门文章

  1. 具有搜索和自定义分页的React Bootstrap表
  2. 微软、谷歌和 BAT 等巨头成立机密计算联盟,联手保护数据安全
  3. native下拉图片放大 react_RN下拉图片放大 - Chason-洪的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. c语言 vscode代码自动补全_借助C/C++ Extension实现VSCode C++代码补全
  5. 管理员拥有系统最高以及所有权限嘛_企业微信管理员是谁?企业微信管理员可以变更转让吗?...
  6. python color属性_Python中类的属性、方法及内置方法
  7. php汽车找车位,自动找车位+停车?这样的车5个月后就要交付给用户了!
  8. 商务专业考计算机二级,计算机二级ms考什么
  9. oracle存在于A不存在于B,Oracle试题
  10. openstack mysql默认密码_OpenStack 安装数据库和rabbitmq消息队列 (三)