ODAC(V9.5.15) 学习笔记(四)TMemDataSet (1)

所有的数据集类组件都是从TMemDataSet继承下来的,该组件实现了内存中对数据的管理,其主要的属性、方法和事件如下。

1.数据更新


名称


类型


说明


CachedUpdates


Boolean


数据集是否采用缓冲模式


ApplyUpdates


将缓冲区中未提交的数据提交数据库,但不执行数据库的事务操作。此时缓冲区数据仍然存在,UpdateStatus状态处于修改状态,需要调用CommitUpdates来清除缓存中的数据,并将状态还原成非修改状态。ApplyUpdates没有放在Try Exception块中,如果有数据更新失败,将触发异常信息提示,如果在OnUpdateError中没有将UpdateAction设置为uaAbort将再次触发错误信息提示。


CancelUpdates


放弃对缓冲区中未提交数据的变动,恢复原来的状态


RestoreUpdates


将数据集中所有缓冲区数据恢复到调用ApplyUpdates之前的更新状态,一版用于更新失败时使用


CommitUpdates


清除缓冲区的未提交数据,但是通过OnUpdateRecord或OnUpdateError事件跳过的修改内容不会被清除


UpdatesPending


Boolean


判断缓冲区是否存在未提交的数据,True表示存在


UpdateStatus


TUpdateStatus


返回数据集在当前记录下的更新状态。


UpdateResult


TUpdateAction


返回数据集调用ApplyUpdates方法后在该记录的执行状态


UpdateRecordTypes


在缓冲模式下返回当前记录的更新模式


LocalUpdate


Boolean


是否本地更新,如果是True则将阻止数据集自动将数据更新提交服务器,而是缓冲在本地内存中。


DeferredPost


与Post不同的是,DeferredPost将已经完成的修改提交数据库永久保存,同时数据集状态仍然停留在编辑或新增状态(dsEdit, dsInsert),调用Cancel函数并不能取消已经提交数据库的修改内容,使用上需慎重


RevertRecord


在缓冲模式下,撤销对当前记录的数据更新内容


OnUpdateRecord


在更新某条记录时触发,如果是在缓冲模式下,则事件在ApplyUpdates之后触发。事件的UpdateAction缺省为uaFail,如果代码操作成功则需要设置为uaApplied。其取值如下:

uaFail    触发失败异常信息

uaAbort        中断后续更新并回滚

uaSkip    跳过,但不报错

uaRetry        重新尝试,很容易形成死循环

uaApplied     代码已经处理,ODAC不再自动处理

需要注意ODAC的OnUpdateRecord事件与系统自带TDataSetProvider的OnUpdateRecord事件略有不同,ODAC的该事件一旦编写了代码,数据集就将数据更新的权利交给了代码,不再自动更新数据。


OnUpdateError


当数据更新发生错误时触发,如果是在缓冲模式下,则事件在ApplyUpdates之后触发。事件的UpdateAction缺省为uaFail,通过访问事件参数DataSet的各个字段TField.OldValue和TField.NewValue获取原值和新值,设置事件的UpdateAction为uaRetry可以重新尝试更新。ApplyUpdates没有放在Try Exception块中,将触发异常信息提示,如果在OnUpdateError中没有将UpdateAction设置为uaAbort将再次触发错误信息提示。

时间: 2024-10-22 03:56:51

ODAC(V9.5.15) 学习笔记(四)TMemDataSet (1)的相关文章

ODAC(V9.5.15) 学习笔记(四)TMemDataSet (3)

3.其他 名称 类型 说明 GetBlob TBlob 按照字段名获取当前数据集中某个Blob类型的字段值,并以TBlob对象形式返回 Prepared Boolean 检查Query的SQL是否已准备好执行 Prepare UnPrepare 数据集准备或取消资源准备,在Open或Close后自动调用 SaveToXML 以XML格式保存到文件或数据流中

ODAC(V9.5.15) 学习笔记(四)TMemDataSet (2)

2.索引与过滤 名称 类型 说明 IndexFieldNames string 设置排序字段列表,每个字段之间通过分号分割.每个字段后可以有以下几种排序选项: ASC        升序 DESC      降序 同时还可以有以下选项: CIS         大小写不敏感 CS          大小写敏感 BIN        使用字符的码值排序 如: DataSet1.IndexFieldNames   := 'LastName ASC CIS;   DateDue DESC'; Rang

ODAC(V9.5.15) 学习笔记(四)TOraQuery (1)

TOraQuery是ODAC中常用的一个组件,其继承关系如下: TDataSet ---TMemDataSet ---TCustomDADataSet ---TOraDataSet ---TCustomOraQuery ---TOraQuery TOraQuery的主要特有属性为: 名称 类型 说明 UpdatingTable String 在没有设置SQLInsert.SQLUpdate.SQLDelete属性情况下,SELECT的SQL语句返回结果需要更新到数据库中时,或需要刷新当前记录时,

ODAC(V9.5.15) 学习笔记(四)TOraDataSet

名称 类型 说明 SequenceMode TSequenceMode ODAC可以直接利用Oracle中的序列对象为表的主键赋值,从而实现主键自动增长的功能.该属性决定了在什么场合下使用序列: smInsert       新增记录时 smPost          更新记录时 注意:根据序列更新的字段由KeyFields决定 KeySequence Oracle中用于生成主键的序列名称 CheckMode TCheckMode 在更新一条记录前,对当前记录进行检查的模式,包括: cmExce

ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(4)

6.Options TCustomDADataSet的选择项为TDADataSetOptions,其成员介绍如下表 : 名称 类型 说明 TDADataSetOptions AutoPrepare Boolean 执行SQL前是否自动执行Prepare CacheCalcFields Boolean 缓冲计算字段(TField.Calculated)和Lookup字段(Tfield.Lookup),能有效提高数据集访问速度,但是也会导致内存使用增加 CompressBlobMode Boolea

ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(1)

1.SQL相关 名称 类型 说明 BaseSQL String 没有被AddWhere.SetOrderBy.FilterSQL等方法处理过的原始SQL语句 FinalSQL String 被AddWhere.SetOrderBy.FilterSQL等方法处理过的最终SQL语句 SaveSQL 将SQL属性中的值保存到BaseSQL中,以便在处理后能够还原 RestoreSQL 从BaseSQL中将语句还原到SQL属性 SQLSaved Boolean SQL是否被保存到BaseSQL中 SQL

ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(5)

7.其他 名称 类型 说明 FindKey 类似于BDE的相关功能,在当前数据集中查找指定的记录 FindNearest 移动游标到最符合查找要求的第一条记录处 FindMacro 当前数据集中是否存在指定的宏 FindParam 当前数据集中是否存在指定的参数 GetDataType 获取指定字段的内部数据类型 GetFieldObject 获取数据集中指定字段的共享对象 GetFieldPrecision 获取数值字段的精度 GetFieldScale 获取字段的范围 GotoCurrent

ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(2)

2.连接相关 名称 类型 说明 Connection 指向一个数据库连接对象 Disconnected 设置为True将在数据库关闭后继续保持数据集的开启状态. 3. 数据获取 名称 类型 说明 FetchRows Integer 从数据库服务器获取一次性获取数据记录的条数,缺省25条. IsQuery Boolean 当数据集Prepare后,判断SQL是否是SELECT语句并能返回数据 RefreshRecord 从数据库中重新获取当前记录值并刷新内容显示,使用的SQL由SQLRefresh

ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(3)

4. 主从表关系 名称 类型 说明 MasterSource 从表对应于主表的DataSource组件 DetailFields 从表中对应于主表字段的外键字段 MasterFields 主表中关联从表的字段,一般为主表的关键字段 5.执行相关 名称 类型 说明 KeyFields String 用于数据集SQLDelete.SQLInsert和 SQLUpdate属性中构建SQL时用到的关键字段.该属性也用于在通过序列自动获取主键值的场合 RowsAffected Integer 执行插入.更