Welcome

首页 / 软件开发 / .NET编程技术 / 胡乱理解ADO.NET(二)

胡乱理解ADO.NET(二)2010-07-13 cnblogs hssl在上篇文章中说了程序对数据库的操作后,我们通常要返回操作信息.例如:返回受影响的行数或者返回查询的数据.SqlDataReader可以对返回的数据进行操作,但只是只读的,而且必须要保持连接才行.那么能不能更灵活的对返回的数据操作呢?答案是肯定的.

既然我要对返回的数据进行灵活的操作,那么我们是不是要搞个东西来存放这些数据.要不然程序得到数据库里的数据后放哪?我们用什么来存放这些数据呢?有个类叫做dataset官方的解释叫做:表示数据在内存中的缓存.看这个解释多少对我来说多少有点茫然.我个人把它通俗理解为:可以把数据存在里面,而这些数据是以在内存中的形式存放的.也就是说不是放在硬盘上的.好了,dataset既然可以存放数据,那么我们把从数据库中返回的数据存放进去到dataset里就行了.这个过程其实就是程序从数据库里得到数据,然后把数据放到dataset对象中,而dataset属于程序里的东西,当然程序就得到了这些数据.从另一个角度也可以说:程序从硬盘上(数据库数据其实存放在硬盘上的)得到数据,然后把得到的数据放到内存中(dataset对象存在于内存中),并且程序能对这内存中的数据进行操作.现在我们知道了dataset可以作为存放数据的容器,那么dataset为什么能存放呢?那我们就自然的联想到了dataset的内部"结构".

dataset其实相当于一个小型的数据库,只不过是在内存中的.我们知道sqlsever数据是关系型的数据库,里面有一张一张的表,表里可以存放数据,而表与表之间又有着联系.这叫关系型数据库.而dataset就类似一个关系型的数据库.对比一下,dataset里也会有一张一张的表,表与表之间也可以存在一定的关系.现在就知道了dataset有两大部分组成.就是表与关系.表就是datatable了,关系就是Relation.当然一个dataset里可以有很多表(datatable),所以才产生表与表之间的关系,如果只能有一个表,那也不存在表与表之间的关系了.那么现在我们来看看表(datatable),datatable其实就是存放数据的地方.表嘛形象的想象成表格.那么表格由什么来组成呢?大家都知道行(row)和列(column).由于一个表(datatable)可能有很多行很多列,所以在datatable里把所有的行统称为:rows(行的集合),所有的列统称为:columns(列的集合).具体每一行每一列叫什么呢?具体的一行叫:DataRow.具体的一列叫:DataColumn.泛泛的说:在datatable中很多的DataRow在一起统称为:rows;很多的DataColumn在一起统称为:columns.现在知道了datatable中有行和列,是不是仅此而已呢?非也!其实还存在一个数据库中也有的东西,叫做:约束(Constraint).datatable的约束都有些什么呢?有两个,一个叫做唯一键(UniqueConstraint),一个叫做外键(ForeignKeyConstraint).唯一键就是说,这个列被设为唯一键后,这列的每行数据是唯一的了,不能重复.就像数据库里自动增长的id.举个例子我们把身份证好就需要设成唯一键,因为不能重复嘛.外键是什么意思呢?和数据库里讲的是一个意思.举个例子,有两张表,第一张表里有个id字段是主键啊,这个id也是第二张表的一个字段,那么我们就可以把第二张表中的id字段设为外键了.现在第一张表里的一个id数据改了第二张表也相应的要改.这样的形式就叫外键.

好了,上面基本说了dataset的内部构成了,总结如下:

dataset由datatable(表)和Relation(表之间的关系)组成,而datatable由DataRow,DataColumn和约束组成.约束有,唯一键和外键两种.

既然dataset简直就像个小型的关系型数据库,那么我们肯定能在里面存放数据.现在我们用代码来说明如果在dataset里存放数据.

我们知道了dataset的内部构成,我们只要把里面的"零部件"一个一个装上就行了.首先,我们需要创建dataset对象,然后再创建datatable对象,想要几个表就创建几个datatable.此时把创建好的datatable对象装到dataset里.现在有了dataset,dataset里也有了datatable,我们再把datatable里加上列和行并填充上数据就可以了.那么我们是先创建datatable中行还是列呢?我们想想在sqlserver数据库里我们建一个表,先要干什么?当然是先设置字段,字段也就是列啊,字段设置好了我们表就建好了,接下来往里加数据就行了.同理,在datatable里我们要先设置字段,也就是列,然后就创建行,而创建行的过程其实也就是往里加数据的过程.