首页 > 代码库 > TClientDataSet 介绍

TClientDataSet 介绍

     一。  ClientDataSet初认识:

1. 从类的继承关系上来看,是TDataSet这个抽象类的子类,所以我们可以在TDataSet这个抽象层次上对其进行我们熟 悉的操作,比如导航、排序、过滤、编辑。

2.要注意的是,TClientDataSet使用了一种全新的技术,它将所有的数据均放在内存中,所以 TClientDataSet是个只存在内存中的“虚拟表”,因此对数据库的操

作是非常快的。在PIII 850,512MB的机器上对十万条记录进行建索引的操作,花费的时间少于半分钟。与一般的数据集组件不同,

3. TClientDataSet两个重要属性。第一个是其Data属性,这是当前内存数据的视 图,反映了所有的数据改变。如果用户从数据中删除一条记录,则此记录将从Data中消失,

相应地,加入一条新记录后,此记录便存在Data属性中了。

另 一个数据源是Delta属性,即增量的意思,这个属性反映了对数据的改变。无论是向Data属性新增还是删除记录,都会在Delta中记录下 来,如果是修改了Data中的记录,

则会在Delta保存两条相应的记录,一条是原始记录,另一条仅包含修改的字段值。正因为Delta的存在和 TClientDataSet在内存中记录数据的特点,所有的改变都没有立即

更新加对应的物理存储中,可以根据这些信息在适当的时候恢复,所以 TClientDataSet天生具有缓冲更新功能。

二。ClientDataSet主要方法:

 1. 打开数据集:ClientDataSet对象的Active属性设为True或者调用其Open方法后,ClientDataSet会向 DataSetProvider发送一个取数据包请求。于是DataSetProvider

便会打开对应的数据集,将记录指针指向第一条记录,然后从头到 尾依次扫描。对于扫描到的每一条记录,都会将其编码成一个variant数组,我们通常将它称之为数据包。

完成扫描后,DataSetProvider会 关闭指向的数据集,并将所有的这些数据包传递给ClientDataSet

2.  本地对数据库的操作:同其它数据库组件一样,edit,append,post.

 特殊的:cancel 取消当前记录的修改。只适合没有post的。且只能修改当前一条记录,若修改了多条,则只能取消最后一条。

         RevertRecord  取消post的修改,也是只能取消一条。

 

TClientDataSet 介绍