DataSet对象的使用

文章目录

    • 1 DataSet对象简介
      • 1.1 通过DataSet对象从数据库服务器获取数据
      • 1.2 DataSet的组成结构
      • 1.3 如何创建DataSet
      • 1.4 DataAdapter对象
    • 2 使用DataSet对下拉框数据进行绑定
    • 3 使用DataSet对DataGridView进行数据展示
    • 4 数据筛选
    • 5 DataAdapter和DataReader的比较
      • 5.1 DataReader的使用
      • 5.2 DataAdapter的使用
      • 5.3 DataAdapter和DataReader两者如何选择
      • 5.4 项目总结

1 DataSet对象简介

1.1 通过DataSet对象从数据库服务器获取数据

DataSet对象的使用_第1张图片
断开连接后,用户可以继续操作数据集中的数据(内存中);使用DataSet可以减少客户端和数据库服务器的交互。

1.2 DataSet的组成结构

Dataset中可以存放若干个DataTable。
DataSet对象的使用_第2张图片

1.3 如何创建DataSet

  • 引入命名空间:System.Data
  • 语法:DataSet 数据集对象 = new DataSet();

1.4 DataAdapter对象

问题:如何将数据的数据放在DataSet中?

  • DataAdapter负责在数据库中检索数据。
  • DataAdapter使用Fill()方法将数据传递到DataSet中。

代码编写:在SQLHelper中添加查询方法
DataSet对象的使用_第3张图片


2 使用DataSet对下拉框数据进行绑定

我们使用DataTable作为数据源,对于ComboBox数据绑定需要关注如下三个属性:

  • DataSource:数据源。
  • ValueMember:实际值(用于程序处理)。
  • DisplayMember:显示的值(显示给用户)。

DataSet对象的使用_第4张图片
在StudentClassService中添加数据访问方法:
DataSet对象的使用_第5张图片
在UI(FrmScoreQuery)中添加数据绑定方法:
DataSet对象的使用_第6张图片
DataSet对象的使用_第7张图片


3 使用DataSet对DataGridView进行数据展示

在DataGridView中显示查询结果:
DataSet对象的使用_第8张图片
在ScoreListService中添加成绩查询方法:
DataSet对象的使用_第9张图片

在UI中为DataGridView设置数据源:
DataSet对象的使用_第10张图片


4 数据筛选

问题:在没有数据库连接的情况下,如何实现数据动态筛选?
DataSet对象的使用_第11张图片
数据的动态视图:DataView

  • 类似数据库中的视图。
  • 提供基础DataTable中数据的动态视图。

完全脱离数据源而实现数据动态筛选。
DataSet对象的使用_第12张图片
DataSet对象的使用_第13张图片
在UI中编写动态筛选代码:

 //根据班级名称动态筛选
private void cboClass_SelectedIndexChanged(object sender, EventArgs e)
{
    if (dtScoreList == null) return;
    this.dtScoreList.DefaultView.RowFilter = string.Format("ClassName='{0}'", this.cboClass.Text.Trim());
}
//显示全部成绩
private void btnShowAll_Click(object sender, EventArgs e)
{
    if (dtScoreList == null) return;
    this.dtScoreList.DefaultView.RowFilter = "ClassName like '%%'";
}
//根据C#成绩动态筛选
private void txtScore_TextChanged(object sender, EventArgs e)
{
    if (dtScoreList == null) return;
    if (this.txtScore.Text.Trim().Length == 0) return;
    if (!Common.DataValidate.IsInteger(this.txtScore.Text.Trim()))
    {
        this.txtScore.Text = "";
        return;
    }
    this.dtScoreList.DefaultView.RowFilter = string.Format("CSharp>{0}", this.txtScore.Text.Trim());
}

5 DataAdapter和DataReader的比较

5.1 DataReader的使用

  • 使用DataReader需要对象集合(list)配合使用,封装较为麻烦。
  • 但对象集合作为数据源能够体现更好的面向对象特性。

DataSet对象的使用_第14张图片

5.2 DataAdapter的使用

  • 与DataSet配合使用,后台无需单独封装,编写非常简单。
  • 但不能更好的体现面向对象编程特性。

DataSet对象的使用_第15张图片

5.3 DataAdapter和DataReader两者如何选择

  • 开发角度:如果是并行开发,最好选择DataReader封装方法。
  • 数据筛选:如果前台实现动态筛选,DataAdpter较为方便。
  • 这种选择:两种可以配合使用。

特别说明: 一般C/S架构程序中,可以适当使用DataAdpter、DataSet占用的是客户机内存;B/S架构程序中,尽量少使用,因为DataSet占用服务器内存。

5.4 项目总结

1.项目框架搭建

  • 基础架构设计(添加相关的类)
  • 通用数据访问类设计
  • 通用模块设计(数据验证、加密)
  • 用户登陆设计
  • 程序退出设计
  • 系统管理设计(密码修改)

2.软件界面的设计

3.基础功能实现

  • 使用面向对象方法实现增、删、改、查询。
  • 特别注意查询方法的选择与使用。

4.用户体验的优化。

5.项目测试与部署。

你可能感兴趣的:(C#)