C#:DataSet控件(数据控件)

来源:互联网 发布:淘宝修改密码在哪里改 编辑:程序博客网 时间:2024/05/30 05:20


    DataSet控件是ADO.NET结构的主要组件,它是从数据源中检索到的数据在内存中的缓存。DataSet由一组DataTable对象组成,可以使这些对象与DataRelation对象互相关联。还可以通过使用UniqueConstraint和ForeginKeyConstraint对象在DataSet中实施数据完整性。

    在典型的多层实现中,用于创建和刷新DataSet并依次更新原始数据的步骤如下:

(1)通过DataAdapter使用数据源中的数据生成和填充DataSet中的每个DataTable。

(2)通过添加、更新或删除DataRow对象更改单个的DataTable对象中的数据。

(3)调用GetChanges方法创建只反映对数据进行更改的第二个DataSet。

(4)调用DataAdapter的Update方法,并将第二个DataSet作为参数传递。

(5)调用Merge方法将第二个DataSet中的更改合并到第一个中。

(6)针对DataSet调用AcceptChanges接受更改,或者调用RejectChanges取消更改。

 

DataSet控件的常用属性及说明

属性

说明

CaseSensitive

  确定DataTable对象中的字符串比较是否区分大小写。默认请款下,为DataSet设置CaseSensitive属性时还将每个相关的DataTable的CaseSensitive属性设置为同一个值。而且,这个属性只对字母有效,对中文和数字就不起作用

DataSetName

  获取或设置当前DataSet的名称。如果不指定,则该属性值设置为NewDataset。如果将DataSet内容写入XML文件,DataSetName是XML文件的根节点名称

DesignMode

  如果在设计时使用组件中的DataSet,DesignMode返回True,否则返回False

DefaultViewManager

  获取DataSet所包含的数据的自定义视图,以便使用自定义的DataViewManager进行筛选、搜索和导航

DataViewManager

  获取与当前视图关联的DataViewManager。如果当前视图是DataTable默认的DataView,则DataViewManager属性返回DataSet的默认DataViewManager;否则,如果DataView没有使用DataViewManager,则该属性为空引用

EnforceConstraints

确定在尝试执行任何更新操作时是否遵循约束规则。如果遵循约束规则,则为true;否则为false。默认为true。

ForeignKeyConstraint

强制使用有关如何对相关表所做更新和删除进行传播的规则。ForeignKeyConstraint的DeleteRule和UpdateRule属性定义在用户试图删除或更新相关表中某行时采取的操作

ExtendedProperties

  用于获取与DataSet相关的自定义信息,通常用这个属性存储自定义用户信息

Relations

  获取用于将表链接起来并允许从父表浏览到子表的关系的集合

RemotingFormat

  为远程处理期间使用的DataSet获取或设置SerializationFormat,可用值由系统枚举值确定,包括Binary(作为二进制内容序列化)和Xml(作为Xml内容序列化,默认值)

Tables

  检查现有的DataTable对象。通过索引访问DataTable有更好的性能

HasErrors

  表示DataSet中的DataRow对象是否包含错误。如果将一批更改提交给数据库并将DataAdapt对象的ContinueUpdateOnError属性设置为True,则在提交更改后必须检查DataSet的HasErrors属性,以确定是否有更新失败

[补充]:属性说明 

►ForeignKeyConstraint属性

    ForeignKeyConstraint可以限制并传播对相关字段的更改。根据为字段的ForeignKeyConstraint设置的属性,并且如果DataSet的EnforceConstraints属性是True,对父行执行某些特定操作将会导致异常(例如,如果ForeignKeyConstraint的DeleteRule属性是None,那么在父行有子行的情况下,则无法删除父行)。

DeleteRule和UpdateRule不同属性的设置

属性值

                                                      说明

 Cascade

  删除或更新相关的行

 SetNull

  将相关行中的值设置为DBNull

 SetDefault 

  将相关行中的值设置为默认值

 None

  对相关行不执行任何操作,这是默认设置                                                                                 

[注]:ADO.NET中有两种约束:ForeignKeyConstraint和UniqueConstraint。默认情况下,通过将DataRelation添加到DataSet来创建两个或多个表之间的关系时,两种约束都会自动创建。但是,也可以在创建关系时,通过指定createConstraints=false禁用这一行为。

 

DateSet控件的常用方法及属性

方法

                           说明

  AcceptChanges 

  提交自加载DateSet或上次调用AcceptChanges以来对其进行的所有更改

  Clear

  通过移除所有表中的所有行来清除任何数据的DataSet

  Clone

  复制DataSet的结构,包括所有DataTable架构、关系和约束。不要复制任何数据

  Copy

  复制DataSet的结构和数据

  GetXml

  返回存储在DataSet中的数据的XML表示形式

  GETXMLSchema

  返回存储在DataSet中的数据的XML表示形式的XML架构

  HasChanges

  获取一个值,该值指示DataSet是否有更改,包括新增行、已删除的行或已修改的行

  RejectChanges

  回滚自创建DataSet以来或上次调用DataSet.AcceptChanges以来对其进行的所有更改

  Merge

  将指定的DataSet、DataTable或DataRow对象的数组合并到当前的DataSet或DataTable中                                    

 

1、创建DataSet

(1)新建:可以指定一个名称参数,如果没有为DataSet指定名称,则默认设置为”NewDataSet”。代码如下:

DataSet customerDS = new DataSet( ”customer”);

(2)复制:

►DataSet的原样副本,其中包含架构、数据、行状态信息和行版本。代码如下:

DataSet copyDataSet = customerDS.Copy();

►创建包含现有DataSet的架构但仅包含已修改行的DataSet。可以返回已修改的所有行或者指定特定的DataRowState。代码如下:

// Copy all changes.

DataSet changeDS = customerDS.GetChanges();

// Copy only new rows.

DataSet addedDS =customerDS.GetChanges(DataRowState.Added);

►仅复制 DataSet 的架构(即关系结构),而不复制任何行。可以使用 ImportRow 将行导入现有 DataTable。代码如下:

DataSet gCustomers = customerDS.Clone();

 

2、 向 DataSet 添加 DataTable

  我们可以创建DataTable 对象,并将其添加到现有 DataSet 中。还可以使用PrimaryKeyUnique 属性为 DataTable 设置约束信息。

  以下示例构造一个DataSet,将一个新的DataTable 对象添加到该 DataSet 中,然后将三个 DataColumn 对象添加到该表中。最后,该代码将一个列设置为主键列。

DataSet customerDS = newDataSet("CustomerDS");

DataTable orderTable =customerDS.Tables.Add("Orders");

DataColumn pkOrderID =orderTable.Columns.Add("OrderID", typeof(Int32));

orderTable.Columns.Add("OrderQuantity",typeof(Int32));

orderTable.Columns.Add("CompanyName",typeof(string));

orderTable.PrimaryKey = new DataColumn[] {pkOrderID };


[注]:对DataSet的任何操作,都是在计算机缓存中完成的。在从数据库完成数据读取后,DataSet就是数据的存放地,它是各种数据源中的数据在计算机内存中映射成的缓存,所以DataSet可以看成是一个数据的容器。

 

0 0
原创粉丝点击