WEB开发网
开发学院软件开发VC 使用ADO封装类的数据库程序开发实例[第二版](下) 阅读

使用ADO封装类的数据库程序开发实例[第二版](下)

 2008-04-19 20:27:50 来源:WEB开发网   
核心提示:Requery 方法:BOOL CAdoRecordSet::Requery(long Options)Name: 通过重新执行对象所基于的查询, 更新 Recordset 对象中的数据.Params: Options 可选. 指示影响该操作选项的位屏蔽. 如果该参数设置为 adAsyncExecute, 则该操作将异

Requery 方法:

BOOL CAdoRecordSet::Requery(long Options)

Name: 通过重新执行对象所基于的查询, 更新 Recordset 对象中的数据.

Params: Options 可选. 指示影响该操作选项的位屏蔽. 如果该参数设置为 adAsyncExecute, 则该操作将异步执行并在它结束时产生 RecordsetChangeComplete 事件

Remarks: 通过重新发出原始命令并再次检索数据, 可使用 Requery 方法刷新来自数据源的 Recordset 对象的全部内容. 调用该方法等于相继调用 Close 和 Open 方法. 如果正在编辑当前记录或者添加新记录将产生错误.

Resync 方法:

BOOL CAdoRecordSet::Resync(AffectEnum AffectRecords, ResyncEnum ResyncValues)

Name: 从基本数据库刷新当前 Recordset 对象中的数据.

Params: AffectRecords: 可选, AffectEnum 值, 决定 Resync 方法所影

响的记录数目, 可以为下列常量之一.

[常量] [说明]
adAffectCurrent 只刷新当前记录.
adAffectGroup 刷新满足当前 Filter 属性设置的记录.只有将 Filter 属性设置为有效预定义常量之一才能使用该选项.
adAffectAll 默认值 刷新 Recordset 对象中的所有记录, 包括由于当前 Filter 属性设置而隐藏的记录.
adAffectAllChapters 刷新所有子集记录.

ResyncValues: 可选, ResyncEnum 值. 指定是否覆盖基本值. 可为下列常量之一.

[常量] [说明]
adResyncAllValues 默认值 覆盖数据, 取消挂起的更新.
adResyncUnderlyingValues 不覆盖数据, 不取消挂起的更新.

Remarks: 使用 Resync 方法将当前 Recordset 中的记录与基本的数据库重新同步. 这在使用静态或仅向前的游标但希望看到基本数据库中的改动时十分有用.

如果将 CursorLocation 属性设置为 adUseClient, 则 Resync 仅对非只读的 Recordset 对象可用.

与 Requery 方法不同, Resync 方法不重新执行 Recordset 对象的基本的命令, 基本的数据库中的新记录将不可见.

Save/Load 方法:

BOOL CAdoRecordSet::Save(LPCTSTR strFileName, PersistFormatEnum PersistFormat)

BOOL CAdoRecordSet::Load(LPCTSTR strFileName)

Name: 将 Recordset 保存在持久性文件中.

Params:

[strFileName]: 可选. 文件的完整路径名, 用于保存 Recordset.

[PersistFormat]: 可选. PersistFormatEnum 值, 指定保存 Recordset 所使用的格式. 可以是如下的某个常量:

[常量] [说明]
adPersistADTG 使用专用的“Advanced Data Tablegram”格式保存.
adPersistXML 默认 使用 XML 格式保存.

Remarks: 只能对打开的 Recordset 调用 Save 方法. 随后使用 Open 方法可以从文件中恢复 Recordset. 如果 Filter 属性影响 Recordset, 将只保存经过筛选的行.

在第一次保存 Recordset 时指定 FileName. 如果随后调用 Save 时, 应忽略 FileName, 否则将产生运行时错误. 如果随后使用新的 FileName 调用 Save, 那么 Recordset 将保存到新的文件中, 但新文件和原始文件都是打开的.

记录集导航方法:

BOOL CAdoRecordSet::MoveFirst()

BOOL CAdoRecordSet::MoveLast ()

BOOL CAdoRecordSet::MoveNext ()

BOOL CAdoRecordSet::MovePrevious ()

Remarks:

使用 MoveFirst 方法将当前记录位置移动到 Recordse 中的第一个记录.

使用 MoveLast 方法将当前记录位置移动到 Recordset 中的最后一个记录. Recordset 对象必须支持书签或向后光标移动; 否则调用该方法将产生错误.

使用 MoveNext 方法将当前记录向前移动一个记录(向 Recordset 的底部). 如果最后一个记录是当前记录并且调用 MoveNext 方法, 则 ADO 将当前记录设置到 Recordset (EOF为 True)的尾记录之后. 当 EOF 属性已经为 True 时试图向前移动将产生错误.

使用 MovePrevious 方法将当前记录位置向后移动一个记录(向记录集的顶部). Recordset 对象必须支持书签或向后游标移动; 否则方法调用将产生错误. 如果首记录是当前记录并且调用 MovePrevious 方法, 则 ADO 将当前记录设置在 Recordset (BOF为True)的首记录之前. 而BOF属性为 True 时向后移动将产生错误. 如果 Recordse 对象不支持书签或向后游标移动, 则 MovePrevious 方法将产生错误.

如果记录集是仅向前的, 但是用户希望支持向前和向后滚动, 则可以使用 CacheSize 属性创建记录缓存, 通过 Move 方法支持向后游标移动. 由于缓存记录是加载到内存中的, 所以应避免不必要地缓存太多记录. 可以调用仅向前 Recordset 对象的 MoveFirst 方法; 这样做可使提供者重新执行生成 Recordset 对象的命令.

Move:

BOOL CAdoRecordSet::Move(long lRecords, long Start)

Name: 移动 Recordset 对象中当前记录的位置.

Params:

[lRecords] 带符号长整型表达式, 指定当前记录位置移动的记录数.

[Start] 可选, 变体型书签. 也可以使用下列 BookmarkEnum 值:

[常量] [说明]
adBookmarkCurrent 默认 从当前记录开始.
adBookmarkFirst 从首记录开始.
adBookmarkLast 从尾记录开始.

State 属性:

long CAdoRecordSet::GetState()

BOOL CAdoRecordSet::IsOpen()

Name: 取得记录集对象的状态(是打开状态还是关闭状态). 对异步方式执行的 Recordset 对象, 则说明当前的对象状态是连接、执行还是获取状态.

returns: 返回下列常量之一的长整型值.

[常量] [说明]
adStateClosed 指示对象是关闭的.
adStateOpen 指示对象是打开的.
adStateConnecting 指示 Recordset 对象正在连接.
adStateExecuting 指示 Recordset 对象正在执行命令.
adStateFetching 指示 Recordset 对象的行正在被读取.

Remarks: 可以随时使用 State 属性确定指定对象的当前状态. 该属性是只读的. Recordset 对象的 State 属性可以是组合值. 例如: 如果正在执行语句, 该属性将是 adStateOpen 和 adStateExecuting 的组合值.

long CAdoRecordSet::GetStatus()

Name: 指示有关批更新或其他大量操作的当前记录的状态.

returns: 返回下列一个或多个 RecordStatusEnum 值之和.

[常量] [说明]
adRecOK 成功地更新记录.
adRecNew 记录是新建的.
adRecModified 记录被修改.
adRecDeleted 记录被删除.
adRecUnmodified 记录没有修改.
adRecInvalid 由于书签无效, 记录没有保存.
adRecMultipleChanges 由于影响多个记录, 因此记录未被保存.
adRecPendingChanges 由于记录引用挂起的插入, 因此未被保存.
adRecCanceled 由于操作被取消, 未保存记录.
adRecCantRelease 由于现有记录锁定, 没有保存新记录.
adRecConcurrencyViolation 由于开放式并发在使用中, 记录未被保存.
adRecIntegrityViolation 由于用户违反完整性约束, 记录未被保存.
adRecMaxChangesExceeded 由于存在过多挂起更改, 记录未被保存.
adRecObjectOpen 由于与打开的储存对象冲突, 记录未被保存.
adRecOutOfMemory 由于计算机内存不足, 记录未被保存.
adRecPermissionDenied 由于用户没有足够的权限, 记录未被保存.
adRecSchemaViolation 由于记录违反基本数据库的结构, 因此未被保存.
adRecDBDeleted 记录已经从数据源中删除.

上一页  1 2 3 4 5 6  下一页

Tags:使用 ADO 封装

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接