DataSet:是ADO.NET的核心对象,支持断开式、分布式数据方案的核心对象,是创建在内存中的集合对象,类似于数据库,用于缓存从数据源检索的数据,位于System.Data命名空间中
DataSet两个重要特征: 1、编程模型与数据源独立:无需与数据集直接交互,可以说任何类型的数据源
2、支持离线访问:应用程序请求的数据存放在本地内存的DataSet中,即使应用程序与数据库断开连接,也可以使用DataSet中的数据
DataSet结构如下图:
DataSet工作原理:
创建DataSet对象语法:DataSet 数据集对象=new DataSet();或者
DataSet 数据集对象=new DataSet(“数据集名称”);
属性 | 说明 |
Tables | 获取包含在DataSet中的表集合 |
方法 | 说明 |
Clear | 清楚DataSet中的数据 |
DataAdapter对象:DataSet与数据库的桥梁
属性 | 说明 |
SelectCommand | 用于从数据源中查询记录的Command对象 |
方法 | 说明 |
Fill() | 向DataSet的数据表中填充数据 |
创建DataAdapter语法:SQLDataReader 对象=new SQLDataReader(SQL命令,数据连接对象)
调用DataAdapter方Fill()方法向DataSet中填充数据 语法如下:
DataAdapter对象.Fill(DataSet对象)
DataSet、DataTable、DataGridView三者关系:DataSet类似于数据库,dataTable 类似于表,DataGridView 类似于视图(视图针对于表)是dataTable的虚表
注:如果需要填充的数据表不存在,数据集将自动创建一个数据表然后在填充数据填充数据,否者将直接填充数据,使用DataAdapter对象操作数据库无需手动打开或关闭连接,它自动对连接进行管理
注:表索引、行索引以及列索引均从0开始,当获取DataRow中某列的值时,其值是Object对象,需要进行显示类型转换
DataGridView:可以通过DataSource属性与DataSet中的数据表进行绑定,实现窗体中以表格形式显示数据集中的数据
属性 | 说明 |
Name | 获取DataGridView控件的名称 |
DataSource | 显示数据的数据源 |
Rows | 获取控件中所有行的集合 |
Columns | 获取控件中所有列的集合 |
SelectionMode | 指示选中单元格的模式,选中一个单元格还是整行 |
SelectedRows | 获取用户选中行的集合 |
MultiSelect | 是否允许选择多个单元格、行或列 |
AllowUserToAddRows | 是否允许用户在DataGridView中添加行 |
AllowGenerateColumns | 设置在DataSource时是否自动创建列 |
AutoSizeColumnMode | 可见列自动调整大小的模式,Fill:所有列自动填充DataGridView |
设置DataGridView控件的数据源语法:
DataGridView 对象.DataSource=DataSet 对象.Tables[“数据表名称或表索引”];
属性和值 | 说明 |
Name=dgv_singer | DataGridView控件的名称 |
AutoSizeColumnMode=Fill | 所有自动填充DataGridView |
RowheadersVisible=false | 不显示含行标题的列 |
SelectionMode=FullRowSelect | 选中某单元格时,选中整行 |
注:如果数据源表中有6个字段,而DataGridView只绑定了5个字段,在运行后会发现DataGridView控件仍然显示了6个字段,因为该控件默认创建数据源中的所有列,解决该问题只需要将 DataGridView 的AutoGenerateColumns属性为false即可
DataView对象筛选和排序数据:
属性 | 说明 |
RowFilter | 筛选在DataView中查看哪些行的表达式 |
Sort | 设置DataView的一个或多个排序列以及排序顺序 |
筛选数据语法: DataView 对象.RowFilter=“过滤字段(SQL命令 只写where后面的条件表达式即可)”
属性 | 说明 |
逻辑运算符 | AND、OR、NOT |
关系运算符 | >、<、>=、<=、!=、== |
算术运算符表达式 | +、-、*、\、% |
Like运算符 | like通配符(*和%) |
聚合函数 | SUM、COUNT、MIN、MAX、AVG |
注:Like运算符通配符只允许在过滤字符串的开头或结尾处使用,而不能在字符串中间出现,字符串必须用单引号引起来,而日期必须以#符号括起,字符型值可以使用小数点和科学计数法
排序数据语法: DataView 对象.Sort=“列名[ASC]DESC],列名 [ASC[DESC]”
ASC:升序;DESC:降序