效仿在内部存款和储蓄器中的数据库DataSet相关的类

那篇连着上①篇DataReader相关类。

那篇连着上一篇DataReader相关类。

上面两段话是在msdn官网摘下来:

下边两段话是在msdn官网摘下来:

      .NET Framework
数据提供程序是特地为数量操作以及便捷、只进、只读访问数据而规划的零部件。Connection

对象提供到数据源的连日。 使用 Command
对象能够访问用于重临数据、修改数据、运转存款和储蓄进度以及发送或探寻参数新闻的数据库命令。
DataReader 可从数据源提供高质量的数据流。 最终,DataAdapter
DataSet 对象和数据源之间起到大桥功能。 DataAdapter 使用
Command 对象在数额源中执行 SQL 命令以向 DataSet
中加载数据,并将对 DataSet 中数量的改观写回数据源中。

.NET Framework
数据提供程序是特意为数量操作以及便捷、只进、只读访问数据而规划的零部件。Connection

对象提供到数据源的接连。 使用 Command
对象能够访问用于重临数据、修改数据、运维存款和储蓄进程以及发送或探寻参数音讯的数据库命令。
DataReader 可从数据源提供高品质的数据流。 最终,DataAdapter
DataSet 对象和数据源之间起到大桥效率。 DataAdapter 使用
Command 对象在数码源中执行 SQL 命令以向 DataSet
中加载数据,并将对 DataSet 中数据的转移写回数据源中。

      ADO.NET DataSet
是专程为单独于别的数据源的数据访问而规划的。由此,它能够用来七种分歧的数据源,用于
XML 数据,或用来管理应用程序本地的数码。 DataSet
包罗1个或八个DataTable 对象的集纳,这个指标由数据行和数据列以及有关
DataTable 对象中多少的主键、外键、约束和涉及音讯整合。

ADO.NET DataSet
是专门为单身于别的数据源的数量访问而布署的。因而,它能够用来三种分歧的数据源,用于
XML 数据,或用于管理应用程序当地的数码。 DataSet
包括2个或四个DataTable 对象的会合,这么些目的由数据行和数据列以及有关
DataTable 对象中数量的主键、外键、约束和事关新闻整合。

图片 1

图片 2

说一下小编对上航海用体育场所的领悟,图水泥铁青部分:能够在数据库中找到相应的映照对象(姑且让自身这么说),金色部分是C#内部为了操作数据便宜,添加的类。

说一下自家对上图的知晓,图棕米红部分:能够在数据库中找到呼应的照射对象,珍珠白部分是C#内部为了操作数据便宜,添加的类。


前不久在读书ADO.NET
Framwork类库:涉及到了DataSet相关的类,就想好好整理下1多级类的涉及,当中涉及到的类从小到大有:

近年来在读书ADO.NET
Framwork类库:涉及到了DataSet相关的类,就想要得整理下一体系类的涉嫌,在那之中涉及到的类从小到大有:

  1. DateColumn
  2. DataRow
  3. Constraint
  4. DataTable
  5. DataRelation
  6. DataSet
  7. SqlCommandBuilder
  8. DataAdapter
  1. DateColumn
  2. DataRow
  3. Constraint
  4. DataTable 
  5. DataRelation
  6. DataSet
  7. SqlCommandBuilder
  8. DataAdapter

那么些类都是用来在内部存款和储蓄器中模拟3个数据库,方便程序的直接操作,免去了往往连连数据库的年月消耗。

这一个类都是用于在内部存款和储蓄器中模拟贰个数据库,方便程序的一直操作,免去了往往接连数据库的时日开支。

来看他俩的称谓就大概知道是做哪些的,上面列二个表表达下她俩的机能:

看样子他们的称呼就大致知道是做哪些的,上边列三个表表明下她俩的功效:

类名

功能

备注
DateColumn 创建列,并设置相关属性(数据类型,列名,约束等) 对应数据库中的列
DataRow 根据列属性创建行数据(和数据库中的insert类似,但不一样) 对应数据库中的行
Constraint 设置或获取约束
DataTable 创建一个数据表,可以将DateColumn和DataRow的实例添加到数据表中 对应数据库中的数据表
DataRelation 将两个表建立父子关系
DataSet 创建一个数据库,可以添加DataTable的实例 对应数据库
SqlCommandBuilder 会自动构建对DataTable的insert,delete,updates操作Sql命令 还没想到备注
DataAdapter 用于将数据源中的数据填充到DataSet或DataTable实例中,
并将操作最后的DataSet或DataTable实例,update到数据库中
还没想到备注

类名

功能

备注
DateColumn 创建列,并设置相关属性(数据类型,列名,约束等) 对应数据库中的列
DataRow 根据列属性创建行数据(和数据库中的insert类似,但不一样) 对应数据库中的行
Constraint 设置或获取约束  
DataTable 创建一个数据表,可以将DateColumn和DataRow的实例添加到数据表中 对应数据库中的数据表
DataRelation 将两个表建立父子关系  
DataSet 创建一个数据库,可以添加DataTable的实例 对应数据库
SqlCommandBuilder 会自动构建对DataTable的insert,delete,updates操作Sql命令 还没想到备注
DataAdapter 用于将数据源中的数据填充到DataSet或DataTable实例中,
并将操作最后的DataSet或DataTable实例,update到数据库中
还没想到备注

1、DataSet

DataSet的连续层次结构是:

图片 3

那些类只是在内部存款和储蓄器中模拟出了贰个数据库,其实质是一个成团也正是第3个图中的DataTableCollnection,数据表的联谊。

 

1.1DataTable数据表

DataTable与数据库中table的区分:

DataTable是编造在内存中的数据表,不是持久化数据,而数据库中的数据是持久化数据,在调用Data艾达pter对象的Update()方法在此之前,DataTable对象影响不断数据库中的数据表,也正是说Update()方法能将DataTable中的数据持久化到数据库中。

【那里最为难下自家博客中这篇DataTable的AcceptChanges()方法和DataRow的RowState属性】


1、DataSet

DataSet的继承层次结构是:

图片 4

其一类只是在内部存款和储蓄器中模拟出了一个数据库,其实质是贰个集合也正是首先个图中的DataTableCollnection,数据表的集结。

取得DataTable对象的不二秘诀有许多,上边就罗列下:

  1. 运用构造函数;
  2. 透过DataSet对象得到;
  3. 调用DataTable对象的Clone()方法获得表结构转变多少个新的DataTable对象;
  4. 调用DataTable对象的Copy()方法获得表结构和表数据生成一个新DataTable对象;

DataTable常用的天性:

属性名 功能 返回值或设置值
CaseSensitive 获取或设置表中数据是否区分大小写 bool类型
ChildRelations 获取该表子关系的集合 DataRelationCollection类型
ParentRelations 获取该表父关系的集合 DataRelationCollection类型
TableName 获取或设置该表的名字 String类型
Columns 获取该表中列的集合 DataColumnCollection类型
Rows 获取该表行的集合 DataRowCollection类型
Constraints 获取table中约束的集合 ConstraintsCollection类型
DataSet 获取该表所属的DataSet对象 DateSet类型
DefaultView 获取可能包含筛选视图或游标位置的自定义视图 DataView类型
HasErrors 获取一个值,该值表示该表所属的DataSet对象中的然后表的任何行中是否有错误 bool类型
MinimumCapacity 获取或设置该表的最初的起始大小 int类型
PrimaryKey 获取或设置充当该表主键的列的数组 DataColumn[]类型

DateTable常用的办法:

方法名 功能 备注
AcceptChanges() 保存对表的修改 参照【DataTable的AcceptChanges()和DataRow的RowState属性】
GetChanges() 获取被修改的行组成的表 一般会在AcceptChanges()方法前调用,
要不然Update()时会包空参数异常
Select() 获取所有行组成的数组 返回值为DataRow[]
GetChanges(DataRowState rowStates) 获取指定状态位的行组成的表
GetErrors() 获取有错误的行的数组
Clear() 清空表数据,但是表结构和约束依然存在
Clone() 克隆表结构,包括约束,不包含数据
Copy() 复制表,包括结构约束,数据
Compute(string expression, string filter) 计算用来传递筛选条件的当前行上的给定表达式

1.1DataTable数据表

DataTable与数据库中table的界别:

      
DataTable是杜撰在内部存款和储蓄器中的数据表,不是持久化数据,而数据库中的数据是持久化数据,在调用DataAdapter对象的Update()方法在此以前,DataTable对象影响不断数据库中的数据表,也正是说Update()方法能将DataTable中的数据持久化到数据库中。

【那里最窘迫下自家博客中那篇DataTable的AcceptChanges()方法和DataRow的RowState属性

 

1.1.1DataColumn数据列

接近于数据库中表的质量。

常用属性:

属性名 功能 返回值或设置值
AllowDBNull 获取或设置该列是否可以为空 true说明可以为空
AutoIncrement 设置或设置是否可以自增 true说明是自增
AutoIncrementSeed 设置自增列的初始值 long类型
AutoIncrementStep 设置自增的步长 long类型
Unique 设置该列中不允许有重复值(默认false,可以重复) bool类型
DataType 设置或获取该列存储的数据类型 Type类型
DefaultValue 在创建新行时获取或设置列的默认值 object类型
ColumnName 获取或设置该列的名字 string类型
Table 获得该列所属的DataTable对象 DataTable类型
MaxLength 获取或设置文本列能存储文本的最大长度 int类型
ReadOnly 获取或设置列的只读属性(默认值为false可读可写) bool类型
Ordinal 获取列在表中的位置 int类型
Expression 用于设置或获取表达式,用于筛选或计算列中值或创建聚合列 string类型

1.1.2DataRow数据行

好像于数据库中表的元组。

常用属性:

属性名 功能 备注
HasErrors 获取该行是否有错误 如果该行包含错误,则为 true;否则,为 false。
ItemArray 获取或设置此行所有值 返回值为object[]数组
RowError 获取或设置该行的自定义错误说明 返回值为string类型,是自定义的错误说明
RowState 该行的状态 参照【DataTable的AcceptChanges()和DataRow的RowState属性】
Table 获取该行所属的表对象 返回值为DataTable类型

获得DataTable对象的办法有成都百货上千,下边就罗列下:

  1. 利用构造函数;
  2. 因此DataSet对象得到;
  3. 调用DataTable对象的Clone()方法获得表结构(不分包表数据)生成二个新的DataTable对象;
  4. 调用DataTable对象的Copy()方法赢得表结构和表数据生成1个新DataTable对象;

DataTable常用的性质:

属性名 功能 返回值或设置值
CaseSensitive 获取或设置表中数据是否区分大小写 bool类型
ChildRelations 获取该表子关系的集合 DataRelationCollection类型
ParentRelations 获取该表父关系的集合 DataRelationCollection类型
TableName 获取或设置该表的名字 String类型
Columns 获取该表中列的集合 DataColumnCollection类型
Rows 获取该表行的集合 DataRowCollection类型
Constraints 获取table中约束的集合 ConstraintsCollection类型
DataSet 获取该表所属的DataSet对象 DateSet类型
DefaultView 获取可能包含筛选视图或游标位置的自定义视图 DataView类型
HasErrors 获取一个值,该值表示该表所属的DataSet对象中的然后表的任何行中是否有错误 bool类型
MinimumCapacity 获取或设置该表的最初的起始大小 int类型
PrimaryKey 获取或设置充当该表主键的列的数组 DataColumn[]类型

 

DateTable常用的措施:

方法名 功能 备注
AcceptChanges() 保存对表的修改 参照【DataTable的AcceptChanges()和DataRow的RowState属性
GetChanges() 获取被修改【增删改】的行组成的表 一般会在AcceptChanges()方法前调用,
要不然Update()时会包空参数异常
Select() 获取所有行组成的数组 返回值为DataRow[]
GetChanges(DataRowState rowStates) 获取指定状态位的行组成的表  
GetErrors() 获取有错误的行的数组  
Clear() 清空表数据,但是表结构和约束依然存在  
Clone() 克隆表结构,包括约束,不包含数据  
Copy() 复制表,包括结构约束,数据  
Compute(string expression, string filter) 计算用来传递筛选条件的当前行上的给定表达式  

 

一.壹.3DataView数据视图

类似于数据库中的视图。

常用属性:

属性名 功能 备注
Sort 获取或设置 DataView 的一个或多个排序列以及排序顺序。

1.1.1DataColumn数据列

看似于数据库中表的品质。

常用属性:

属性名 功能 返回值或设置值
AllowDBNull 获取或设置该列是否可以为空(默认可以为空) true说明可以为空
AutoIncrement 设置或设置是否可以自增(默认不自增) true说明是自增
AutoIncrementSeed 设置自增列的初始值(默认为0) long类型
AutoIncrementStep 设置自增的步长(默认为1) long类型
Unique 设置该列中不允许有重复值(默认false,可以重复) bool类型
DataType 设置或获取该列存储的数据类型 Type类型
DefaultValue 在创建新行时获取或设置列的默认值 object类型
ColumnName 获取或设置该列的名字 string类型
Table 获得该列所属的DataTable对象 DataTable类型
MaxLength 获取或设置文本列能存储文本的最大长度 int类型
ReadOnly 获取或设置列的只读属性(默认值为false可读可写) bool类型(默认false)
Ordinal 获取列在表中的位置(从零开始) int类型(找不到就返回-1)
Expression 用于设置或获取表达式,用于筛选或计算列中值或创建聚合列 string类型

2、SqlCommandBuilder

下面是DbCommandBuilder的接续层次图,不是SqlCommandBuilder的,

图片 5

上海体育场合中的Odbc,奥莱Db,Oracle请看第二点DataAdapter介绍【连接数据库的向上历史】。

以此SqlCommandBuilder见名知意,他是三个Sql命令的建造者,用于生成Sql命令,它是依据DataTable中每行的RowState和数据表的主键来生成sql语句的,然后绑定SqlDataAdapter对象,当SqlDataAdapter对象调用Update()方法立异数据库时,他就会自动生成sql语句。

SqlCommandBuilder scb = new SqlCommandBuilder;//或者向下面这样SqlCommandBuilder scb2 = new SqlCommandBuilder();scb2.DataAdapter = adapter;

数据表的主键大家都知道,那那几个每行的RowState是如何事物?

实质上大家在对DataTable中的行进行增加和删除改操作时,这几个行都未有并不曾被更改,而是其RowState那性情子被涂改了,那属性是3个只读的枚举类型。

【详细的RowState请看本人博客中那篇DataTable的AcceptChanges()方法和DataRow的RowState属性】

【详细的SQLCommandBuilder打造T-Sql命令请看那篇SqlCommandBuilder创设T-sql语句】

1.1.2DataRow数据行

接近于数据库中表的元组。

常用属性:

属性名 功能 备注
HasErrors 获取该行是否有错误 如果该行包含错误,则为 true;否则,为 false。
ItemArray 获取或设置此行所有值 返回值为object[]数组
RowError 获取或设置该行的自定义错误说明 返回值为string类型,是自定义的错误说明
RowState 该行的状态(一共五个状态) 参照【DataTable的AcceptChanges()和DataRow的RowState属性
Table 获取该行所属的表对象 返回值为DataTable类型

3、DataAdapter

持续层次图:

图片 6

图中间写到了ODBC,奥莱,那自身就理一下关于连接数据库的开拓进取历史:

  1. odbc以前:使用的不一样的数据库都某个对应数据库访问API,领导说换数据库,那就须要修改源码,那会整死程序猿的;
  2. odbc时:定义了二个公共数据访问层,可以用来拜访差不多拥有的关系型数据库,次第数据库厂商提供相应的驱动即可;
  3. ole
    db时:基于odbc,不仅能够访问关系型数据库,还足以访问非关系型数据
  4. 那什么样是ADO呢?ADO是面向对象的结果,可以达成和ole db一样,但比ole
    db更简约,也正是说,ADO将ole
    db中的方法封装成多个类,只要主借使捌个类的利用;
  5. ADO.NET呢?那一个中扩展了多个SqlClient,专门用来访问SQL
    Server,也是它访问SQL Server最快。

本身也是注重行使SqlDataAdapter那么些类,要是论通用性,当然是采纳奥莱DbAdapter会好壹些。

上边就讲一下SqlData艾达pter那些类:

它有八个构造函数:

图片 7

在此间也可以讲一下SqlDataAdapter和SqlDataReader的界别:

SqlDataAdapter的实例是1回将急需的结果集获得内存中,并自行关闭数据库连接(今后数据库连接都称呼conn);而SqlDataReader的实例是调用Reader()方法,它维持了一个指南针的法力,2遍读取三个元组并活动向下活动一个人,并且不得不从结果集中的第2行开始,不能够悔过自新(上一篇博客有讲过SqlData里德r对象),而且在那个活动指针读取元组的长河中,conn平素维持三番五次,供给手动去关闭,或许使用using代码块。假设只是要查询数据,使用SqlDataReader会越来越好一点,因为他速度比SqlDataAdapter要快。

SqlDataAdapter内部也是透过SqlDataReader拿取数据库的数据。

SqlDate艾达pter用于将数据库中的数据填充到DataTable只怕DataSet中

未完待续==================================

一.一.3DataView数据视图

好像于数据库中的视图。

常用属性:

属性名 功能 备注
Sort 获取或设置 DataView 的一个或多个排序列以及排序顺序。  
     
     
     
     
     
     

 


2、SqlCommandBuilder

上边是DbCommandBuilder的继承层次图,不是SqlCommandBuilder的,

图片 8

上海教室中的Odbc,奥莱Db,Oracle请看第三点DataAdapter介绍【连接数据库的升高历史】。

本条SqlCommandBuilder见名知意,他是3个Sql命令的建造者,用于生成Sql命令,它是基于DataTable中每行的RowState和数据表的主键来生成sql语句的,然后绑定SqlDataAdapter对象,当SqlDataAdapter对象调用Update()方法立异数据库时,他就会自动生成sql语句。

SqlCommandBuilder scb = new SqlCommandBuilder(adapter);
//或者向下面这样
SqlCommandBuilder scb2 = new SqlCommandBuilder();
scb2.DataAdapter = adapter;

数据表的主键大家都领悟,那这么些每行的RowState是如何事物?

实际大家在对DataTable中的行开始展览增加和删除改操作时,那一个行都未有并不曾被改动,而是其RowState这么些天性被涂改了,那属性是三个只读的枚举类型。

【详细的RowState请看自身博客中这篇DataTable的AcceptChanges()方法和DataRow的RowState属性

【详细的SQLCommandBuilder营造T-Sql命令请看那篇SqlCommandBuilder构建T-sql语句


3、DataAdapter

持续层次图:

图片 9

图中间写到了ODBC,奥莱,那小编就理一下关于连接数据库的进化历史:

  1. odbc此前:使用的不比的数据库都有分别对应数据库访问API,领导说换数据库,那就供给修改源码,那会整死程序猿的;
  2. odbc时:定义了3个公共数据访问层,可以用来拜会大致全部的关系型数据库,梯次数据库厂商提供对应的驱动即可;
  3. ole
    db时:基于odbc,不仅能够访问关系型数据库,还是能够访问非关系型数据
  4. 那什么样是ADO呢?ADO是面向对象的结果,能够做到和ole db壹样,但比ole
    db更简明,也便是说,ADO将ole
    db中的方法封装成七个类,只要首若是七个类的利用;
  5. ADO.NET呢?这当中扩展了三个SqlClient,专门用于访问SQL
    Server,也是它访问SQL Server最快。

自家也是生死攸关利用SqlData艾达pter那几个类,如果论通用性,当然是利用奥莱DbAdapter会好一些。

上边就讲一下SqlData艾达pter这一个类:

它有多个构造函数:

图片 10

在此处也可以讲一下SqlDataAdapter和SqlDataReader的分别:

     
SqlDataAdapter的实例是一回将要求的结果集得到内部存款和储蓄器中,并自行关闭数据库连接(现在数据库连接都叫作conn);而SqlDataReader的实例是调用Reader()方法,它维持了三个指南针的意义,叁遍读取1个元组并活动向下移动一个人,并且不得不从结果集中的第一行起先,不能够悔过自新(上壹篇博客有讲过SqlDataReader对象),而且在那个活动指针读取元组的进度中,conn一向维系一而再,须求手动去关闭,大概利用using代码块。借使只是要查询数据,使用SqlDataReader会更加好一点,因为他速度比SqlDataAdapter要快。

          SqlDataAdapter内部也是透过SqlDataReader拿取数据库的数据。

SqlDateAdapter用于将数据库中的数据填充到DataTable也许DataSet中

未完待续==================================

【点击那里回到主页】

相关文章

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图