您的位置:首页 > 职场人生

Learn something basic about ADO.NET [From 程序员大本营]

2005-01-01 21:50 330 查看
DataSet对象代表了一个在内存中的、有着丰富功能的数据缓冲区。DataSet对象也通过表组织数据,这些表与原始的数据源之间不存在连接。我们可以添加表,表可以通过读取本地或远程XML文件获得,或者也可以从任何可访问的系统资源(包括内存和其他附属设备在内)读取。我们可以排序、索引、过滤数据表。

我们可以通过命令用数据集合填充DataSet对象。如果用.NET集合的形式为DataSet对象提供数据表(具有集合功能的.NET数据类型是ICollection),同一个DataSet对象能够服务来自多个连接的多个请求。ADO.NET的DataSet对象比ADO的Recordset更一般化;与ADO的Recordset不同,它是对数据源的一种抽象。然而,DataSet对象保留了一个在内存中工作的数据存储器;它没有完全淘汰记录集功能。如果我们只需要一次性地滚动记录集,然后生成某种输出,那么,我们应该使用DataReader对象。.NET的DataReader对象类似于“只能向前、只读”的记录集,但它是一个高度专用化的对象,所以无论在体积和开销上它都要比记录集小。事实上,记录集能够执行许多不同的任务,是一个相当臃肿的对象。与ADO的Recordset相比,DataReader不包含进行“家务管理”的代码,除了实现功能所必需的代码之外,它不包含任何其他代码。

DataRelation:这个对象代表着两个表之间的父-子关系。关系建立在具有同样数据类型的列上,但列不必有相同的精确度。关系可以是1:1、一对多(1:M)或多-对-多(M:N)关系。关系可以方便地把对父记录的改动传播到子记录,但这不是默认行为。

要启用DataRelation对象,我们必须把一个ForeignKeyConstraint加入到待修改数据表的ConstraintsCollection成员。DataTable对象的ConstraintsCollection成员决定了当一个父表的值被删除或改动时,要执行一些什么动作。

设置了关系之后,ADO.NET将拒绝所有破坏该关系的数据集改动操作,并产生一个运行时异常。在遍历表的记录时,调用GetChildRows方法可以从已连接的表访问所有相关的行。GetChildRows方法返回一个DataRow对象的数组,这是一种新的分层式记录导航方式,而传统的记录导航方式属于顺序模式或随机模式。

关系是不可传递的。假设表A关联到表B,表B又关联到表C的一些行。另外,假设在遍历表A记录的时候,对于每一个表A的记录,我们要访问现有关系中的子记录。如果我们想要访问对应表B中特定记录的表C记录,那么,我们不能使用由A-B的关系得到的表B的DataRow对象;相反,我们必须从表B打开一个新的表视图,找到我们想要的特定记录,然后通过表B对表C的关系调用GetChildRows方法。

ExecuteScalar() Method

  使用ExecuteScalar方法来取得一个单个地返回数据,比如对数据的统计。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: