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 中。还可以使用PrimaryKey 和Unique 属性为 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可以看成是一个数据的容器。
- C#:DataSet控件(数据控件)
- wpf ComboBox 控件利用DataSet数据绑定
- Winform dataSet绑定相关控件数据
- C#:DataGridView控件(数据控件)
- C# 读取DataSet数据并显示在ListView控件中
- C#读取Dataset数据并显示在ListView控件中
- C#DataSet处理数据
- C#:数据集DataSet
- DataSet数据绑定到控件时的数据状态变化过程
- C#:从DataGridView控件托放数据到TreeView控件
- [C#][控件]高级控件
- 开放式并发 ,数据绑定控件和数据源控件(sqldatasource)返回的数据库副本dataview(dataset)
- web(c#) 程序设计 数据验证控件说明
- C#:在DataGridView控件中显示数据
- 绑定GridView控件时,当数据集DataSet为空时也显示GridView的表头
- VS2005中,dataset数据如何显示到menu和treeview控件
- SDF数据库与数据控件DataSet和bindingSource及TableAdapter及tableAdapterManager配置图示
- 将数据从DATASET导入到WINFORM中的LISTVIEW、LISTBOX、COMBOBOX控件的方法
- 【同步策略】带宽限制下的视觉实体属性传播
- ViewController的生命周期
- impress.js 装X利器
- 【同步策略】网络游戏同步原理荟萃
- OC学习笔记OOP之封装
- C#:DataSet控件(数据控件)
- 向gridview中添加超级链接列
- 替换空格
- web前端面试题(百度)
- Dijkstra算法(Java实现)
- HDU3257 Hello World!
- 开源夏令营(1)
- Lua环境的搭建
- 【SDOI2008】【BZOJ】【P2037】【Sue的小球】【题解】【费用提前计算相关的DP】