记录集:再次查询记录集 (ODBC)

更新:2007 年 11 月

本主题适用于 MFC ODBC 类。

本主题介绍如何使用记录集对象从数据库再次查询(即刷新)其自身,以及何时可能要用 Requery 成员函数执行此操作。

再次查询记录集的主要原因包括:

  • 使记录集在以下方面反映最新的更改:您或其他用户添加的记录,其他用户删除的记录。注意:您删除的记录已经反映在记录集中了。

  • 基于变化的参数值来刷新记录集。

使记录集是最新的

您经常要再次查询记录集对象以使记录集对象是最新的。在多用户数据库环境中,其他用户可以在您的记录集的生存期内更改数据。有关您的记录集何时反映其他用户所做的更改以及其他用户的记录集何时反映您所做的更改的更多信息,请参见记录集:记录集如何更新记录 (ODBC)动态集

基于新参数再次查询

Requery 的另一个常用(也是同等重要的)用法是基于变化的参数值选择一组新记录。

提示:

如果用变化的参数值调用 Requery,则查询速度可能比再次调用 Open 快得多。

再次查询动态集与快照

由于动态集意味着用动态的最新数据表示记录集,因此,如果要反映其他用户的添加内容,则需要经常再次查询动态集。另一方面,在准备报表、计算总数等操作时,快照的静态内容是非常安全的,因此快照也非常有用。但是,某些时候可能也需要再次查询快照。在多用户环境中,由于其他用户更改数据库,快照数据可能会与数据源失去同步。

再次查询记录集对象

  • 调用对象的 Requery 成员函数。

或者,可以关闭并重新打开原始记录集。无论哪种情况,新记录集都代表数据源的当前状态。

有关示例,请参见记录视图:从另一个记录集填充列表框

提示:

若要优化 Requery 性能,请避免更改记录集的 filterSort。在调用 Requery 前仅更改参数值。

如果 Requery 调用失败,可以重试调用,否则,应用程序应顺利终止。对 RequeryOpen 的调用可能会由于多种原因而失败。可能由于发生了网络错误;或者在调用期间,在释放现有数据之后但尚未获得新数据之前,另一个用户可能获得独占性访问;或者记录集所依赖的表可能已被删除。

请参见

概念

记录集 (ODBC)

记录集:动态绑定数据列 (ODBC)

记录集:创建和关闭记录集 (ODBC)