快照

快照是一个记录集,反映创建快照时存在的数据静态视图。 打开快照并移动到所有记录时,它包含的记录集及其值不会更改,直到通过调用 Requery 重新生成快照。

注意

本主题适用于 MFC ODBC 类。 如果使用 MFC DAO 类而不是 MFC ODBC 类,请参阅 CDaoRecordset::Open 以获取快照类型记录集的说明。

可以使用数据库类创建可更新或只读快照。 与动态集不同,可更新的快照不会反映其他用户所做的记录值更改,但它确实反映了程序进行的更新和删除。 添加到快照的记录在调用 Requery 之前不会对快照可见。

提示

快照是 ODBC 静态游标。 在滚动到该记录之前,静态游标实际上不会获取一行数据。 为了确保立即检索所有记录,可以滚动到记录集的末尾,然后滚动到要查看的第一条记录。 但是,请注意,滚动到末尾会产生额外的开销,并降低性能。

当需要数据在操作期间保持固定时,快照最有价值,就像生成报表或执行计算时一样。 即便如此,数据源也可以极度偏离快照,因此可能需要不时重新进行生成。

快照支持基于 ODBC 游标库,该库提供任何级别 1 驱动程序的静态游标和定位更新(可更新性所需)。 必须将此游标库 DLL 加载到内存中,才能获得此支持。 构造 CDatabase 对象并调用其 OpenEx 成员函数时,必须指定 dwOptions 参数的 CDatabase::useCursorLib 选项。 如果调用 Open 成员函数,则默认加载游标库。 如果使用动态集而不是快照,你不会希望加载游标库。

仅当构造 CDatabase 对象时加载 ODBC 游标库或正在使用的 ODBC 驱动程序支持静态游标时,快照才可用。

注意

对于某些 ODBC 驱动程序,快照(静态游标)可能无法更新。 查看驱动程序文档,了解支持的游标类型及其支持的并发类型。 若要保证快照可更新,请确保在创建 CDatabase 对象时将游标库加载到内存中。 有关详细信息,请参阅 ODBC:ODBC 游标库

注意

如果要同时使用快照和动态集,则必须将它们基于两个不同的 CDatabase 对象(两个不同的连接)。

有关所有记录集共享的属性快照的详细信息,请参阅 Recordset (ODBC)。 有关 ODBC 和快照的详细信息,包括 ODBC 游标库,请参阅 ODBC

另请参阅

开放式数据库连接 (ODBC)