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

本文详细介绍了DataSet对象的使用,包括为何使用、其工作原理和创建方法。DataSet作为临时数据库,允许在断开连接状态下处理大量数据。此外,文章还探讨了DataAdapter的角色,它是填充DataSet并与数据库交互的关键。最后,给出了一个使用DataGridView控件展示数据库数据的实例。
摘要由CSDN通过智能技术生成

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

 

1、认识DataSet 对象

1.1 为什么使用DataSet对象?

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

  • 大批量的查询、修改数据怎么办?如果只做查询,用DataReader就可以了,但是同时还要修改数据,DataReader(只读)就没办法了。
  • 想在断开连接的情况下操作数据怎么办?我们知道使用DataReader和Command对象时必须保持数据库的连接(加大服务器负担),连接断开后就无法使用了,这种情况下就需要使用DataSet了。

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

1.2  什么是DataSet对象?

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

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

1.3 DataSet的结构

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

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

1.4  数据集(DataSet)的工作原理

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

1.5  如何创建DataSet对象

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

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

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

举例:

DataSet dataSet = new DataSet();

DataSet dataSet = new DataSet("MySchool");

 

 

2、认识DataAdapter 对象

2.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.2 DataAdapter对象的主要属性和方法

 

                       属性

                                   说明

SelectCommand  

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

                      方法

                                   说明

Fill 

向 DataSet 中的表填充数据

Update

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

 

3、实例练习:

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

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

--创建数据库
create database StudentDB;
--使用数据库
use StudentDB;
--创建数据库表StudentInfo
create table StudentInfo(
    Id int primary key identity(1,1),
    Names nvarchar(20) not null,
    Class nchar(8) not null,
    Score int not null
    );
--向表StudentInfo中插入几行数据
insert into StudentInfo(Names,Class,Score)
select '张三','1831301',92 union
select '李四','1831302',52 union
select '王五','1831303',78 union
select '赵六','1831304',83 ;


第二步:有应用程序。在VS软件中新建项目,并设计程序。

第三步:编写代码,双击窗体,进入Load事件代码编写

        private void Form1_Load(object sender, EventArgs e)
        {
            //1.创建链接对象
            SqlConnection con = new SqlConnection();
            //2.给对象添加属性
            con.ConnectionString = "data source=LAPTOP-IN3E6IJP\\SQLEXPRESS; initial catalog=StudentDB; integrated security=true";
            //3.打开数据库
            con.Open();
            MessageBox.Show("sucess");//消息提示框
            //4.创建sql语句
            string sql = "select * from StudentInfo";
            //5.创建临时仓库,用以存储数据
            DataSet dataSet = new DataSet();
            //6.创建运输车,获取数据(从数据库对象con,采用sql语句获取数据)
            SqlDataAdapter da = new SqlDataAdapter(sql, con);
            //7.将运输车获取到的数据填充到临时仓库
            da.Fill(dataSet);
            //8.将临时仓库里的数据,填充到控件里
            dataGridView1.DataSource = dataSet.Tables[0];//获取到的数据以table形式存储
        }

思考:如何更新数据?

 

 

 

 

=================这里是结束分割线=====================

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逍遥小丸子

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值