知识点:DataSet 对象的使用、DataAdapter 对象的使用、DataGridView 控件的使用。
我们先来看看为什么要学习DataSet数据集,这里有两个问题:
所以DataSet是一个很强大的组件,它的特点是可以在断开连接的情况下查询和修改大量的数据,这是很有意义的。因为一个联网的软件系统将会存在大量的客户端需要连接服务器端的数据库,如果都需要保持连接,服务器的负载将会很大,这样就会影响软件系统的响应速度(比如QQ)。如果客户端获得数据后断开连接,这样服务器的负载就会小得多。DataSet就是在这种目的下被设计出来的。
DataSet(数据集)是一个临时的数据库,它的数据是保存在内存中的,它独立于任何数据库,也就是DataSet可以保存所有类型数据库的数据。
为了更好理解这个临时数据库的概念,我们把软件系统想象成一个工厂,那么我们的数据库就是工厂的仓库,我们的应用程序相当于工厂的生产线,生产线生产需要的原料也就是数据了,它是保存在仓库中的,每次去仓库中运原料都会花很多时间,为了提高生产效率,我们就在生产线旁边建一个临时的仓库,每次从仓库运来原料将临时仓库填满,生产线从临时仓库拿原料就快多了,这个临时仓库就是我们今天学习的DataSet了。由于DataSet是临时的数据库,所以数据是保存在内存中的,在程序运行时使用。
通过前面的介绍,大家应该对DataSet的概念有了一个基本的认识,我们说它是一个临时的数据库,其实DataSet的基本结构也类似一个数据库,我们知道数据库中有多张表,每张表又包括多行数据,每行数据又包括多列。DataSet的结构也是这样的,DataSet里有一个数据表的集合,包括多个DataTable数据表,每个DataTable又有数据列的集合和数据行的集合,包含多个数据列DataColumn和数据行DataRow。
我们再简单了解下数据集是怎么工作的,当我们在客户端做查询时,将会向服务器的数据库发送请求,服务器会发送数据库到数据集中,客户端再从数据集中获得数据。客户端修改数据时,会先修改数据集的数据,再由数据集提交修改后的数据给数据库。
创建这个DataSet对象的语法是:
数据集的名字可以不填,默认是NewDataSet
举例:
DataSet dataSet = new DataSet();
DataSet dataSet = new DataSet("MySchool");
我们知道了DataSet对象的作用,那么DataSet中的数据是怎么放进去的呢?这就需要用到数据适配器DataAdapter了,还是拿刚才的例子说,我们的临时仓库(数据集)要从仓库(数据库)运货(数据),它们之间就需要建立一条公路(数据库连接),而路上运货的车就是数据适配器了。所以DataAdapter的主要作用就是负责给数据集填充数据了。
不同的数据库,DataAdapter对象也不同,我们要用的就是SqlDataAdapter了。
命名空间 |
对应的 DataAdapter 对象 |
System.Data.SqlClient |
SqlDataAdapter |
System.Data.OleDb |
OleDbDataAdapter |
System.Data.Odbc |
OdbcDataAdapter |
System.Data.OracleClient |
OracleDataAdapter |
属性 |
说明 |
SelectCommand |
从数据库检索数据的 Command 对象 |
方法 |
说明 |
Fill |
向 DataSet 中的表填充数据 |
Update |
将 DataSet 中的数据提交到数据库 |
将数据库表里的数据,填充到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形式存储
}
思考:如何更新数据?
=================这里是结束分割线=====================