C#编程基础(下)第七课:ADO.NET数据库开发(三)DataSet 对象和DataAdapter 对象的使用

知识点:DataSet 对象的使用、DataAdapter 对象的使用、DataGridView 控件的使用。

 

一、认识DataSet 对象

1、为什么使用DataSet对象?

        我们先来看看为什么要学习DataSet数据集,这里有两个问题:

        (1)、大批量的查询、修改数据怎么办?

                     如果只做查询,用DataReader就可以了,但是同时还要修改数据,DataReader(只读)就没办法了。
        (2)、想在断开连接的情况下操作数据怎么办?

                     我们知道使用DataReader和Command对象时必须保持数据库的连接(加大服务器负担),连接断开后就无法使用了,这种情况下就需要使用DataSet了。

        所以DataSet是一个很强大的组件,它的特点是可以在断开连接的情况下查询和修改大量的数据,这是很有意义的。因为一个联网的软件系统将会存在大量的客户端需要连接服务器端的数据库,如果都需要保持连接,服务器的负载将会很大,这样就会影响软件系统的响应速度(比如QQ)。如果客户端获得数据后断开连接,这样服务器的负载就会小得多。DataSet就是在这种目的下被设计出来的。

2、什么是DataSet对象?

         DataSet(数据集)是一个临时的数据库,它的数据是保存在内存中的,它独立于任何数据库,也就是DataSet可以保存所有类型数据库的数据

        为了更好理解这个临时数据库的概念,我们把软件系统想象成一个工厂,那么我们的数据库就是工厂的仓库,我们的应用程序相当于工厂的生产线,生产线生产需要的原料也就是数据了,它是保存在仓库中的,每次去仓库中运原料都会花很多时间,为了提高生产效率,我们就在生产线旁边建一个临时的仓库,每次从仓库运来原料将临时仓库填满,生产线从临时仓库拿原料就快多了,这个临时仓库就是我们今天学习的DataSet了。由于DataSet是临时的数据库,所以数据是保存在内存中的,在程序运行时使用。

3、DataSet的结构

        通过前面的介绍,大家应该对DataSet的概念有了一个基本的认识,我们说它是一个临时的数据库,其实DataSet的基本结构也类似一个数据库,我们知道数据库中有多张表,每张表又包括多行数据,每行数据又包括多列。DataSet的结构也是这样的,DataSet里有一个数据表的集合,包括多个DataTable数据表,每个DataTable又有数据列的集合和数据行的集合,包含多个数据列DataColumn和数据行DataRow。

 

也可以用这张图来理解DataSet的结构

4、数据集(DataSet)的工作原理

         我们再简单了解下数据集是怎么工作的,当我们在客户端做查询时,将会向服务器的数据库发送请求,服务器会发送数据库到数据集中,客户端再从数据集中获得数据。客户端修改数据时,会先修改数据集的数据,再由数据集提交修改后的数据给数据库。

 

5、如何创建DataSet对象

创建这个DataSet对象的语法是:

DataSet 数据集对象 = new DataSet("数据集的名称字符串");

数据集的名字可以不填,默认是NewDataSet
 

举例:
DataSet dataSet = new DataSet();
DataSet dataSet = new DataSet("MySchool");

二、认识DataAdapter 对象

1、为什么使用DataAdapter

        我们知道了DataSet对象的作用,那么DataSet中的数据是怎么放进去的呢?这就需要用到数据适配器DataAdapter了,还是拿刚才的例子说,我们的临时仓库(数据集)要从仓库(数据库)运货(数据),它们之间就需要建立一条公路(数据库连接),而路上运货的车就是数据适配器了。所以DataAdapter的主要作用就是负责给数据集填充数据了。

        不同的数据库,DataAdapter对象也不同,我们要用的就是SqlDataAdapter了。

  命名空间

            对应的 DataAdapter 对象

System.Data.SqlClient 

SqlDataAdapter

System.Data.OleDb

OleDbDataAdapter

System.Data.Odbc 

OdbcDataAdapter

System.Data.OracleClient

OracleDataAdapter

  

2、DataAdapter对象的主要属性和方法

 属性

                                   说明

SelectCommand  

从数据库检索数据的 Command 对象

  方法

                                   说明

Fill 

向 DataSet 中的表填充数据

Update

将 DataSet 中的数据提交到数据库

  

3、实例练习:

将数据库表里的数据,填充到DataGridView 控件里

第一步:创建数据库。使用SQL语句创建数据库、数据库表、并向表中插入一些数据

第二步:创建应用程序。在Visual Stusio 2017软件中新建项目,并设计程序。

(1)、窗体上添加一个DataGridView控件


 

(2)、添加MySQL数据库

(3)、双击窗体,进入Load事件编写代码

       添加命名空间  using MySql.Data.MySqlClient;

using MySql.Data.MySqlClient;

完整的程序代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using MySql.Data.MySqlClient;

namespace WindowsFormsApp8
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string constr = "Server=localhost;UserId=root;Password=68331;Database=CarSYS;pooling=false;CharSet=utf8;port=3306";//声明一个字符串用来存放连接数据库的信息
            //创建 SQLConnection 的实例
            MySqlConnection connection = new MySqlConnection(constr);//创建一个SqlConnection对象
            try       //将可能出错的语句放在try语句里
            {
                connection.Open();
                string sqlstr = "select * from Brand";//声明一个字符串,用来存放查询数据库表语句
                //创建 SQLDataAdapter 类的对象(创建运输车,获取数据(从数据库对象con,采用sql语句获取数据))
                MySqlDataAdapter sda = new MySqlDataAdapter(sqlstr, connection);
                //创建 DataSet 类的对象(创建临时仓库,用以存储数据)
                DataSet dataSet = new DataSet();
                //使用 SqlDataAdapter对象sda将查询结果填充到DataSet对象dataSet中
                sda.Fill(dataSet);
                //将临时仓库里的数据,填充到控件里
                dataGridView1.DataSource = dataSet.Tables[0];//获取到的数据以table形式存储
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                if (connection != null)
                {
                    //关闭数据库连接
                    connection.Close();
                }
            }
        }
    }
}

运行效果如下:

思考:如何更新数据?

 


————————————————
版权声明:本文为CSDN博主「逍遥小丸子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dnruanjian/article/details/90812709

 

https://blog.csdn.net/dnruanjian/article/details/90812709

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值