记录集:记录集如何更新记录 (ODBC)
本主题适用于 MFC ODBC 类。
除了能够从数据源中选择记录外,记录集还可以(可选地)更新或删除所选记录或添加新记录。 三个因素决定了记录集的可更新性:连接的数据源是否可更新、创建记录集对象时指定的选项以及创建的 SQL。
注意
CRecordset
对象所基于的 SQL 会影响记录集的可更新性。 例如,如果你的 SQL 包含连接或 GROUP BY 子句,MFC 会将可更新性设置为 FALSE。
注意
本主题适用于从 CRecordset
派生的对象,其中尚未实现批量提取行。 如果使用批量提取行,请参阅记录集:批量提取记录 (ODBC)。
本主题介绍:
你在记录集更新中的角色以及框架为你做什么。
记录集:AddNew、Edit 和 Delete Work (ODBC) 的工作方式从记录集的角度介绍了这些函数的操作。
记录集:关于更新的更多信息 (ODBC) 通过解释事务如何影响更新、关闭记录集或滚动如何影响正在进行的更新以及你的更新如何与其他用户的更新交互来完成记录集更新故事。
你在记录集更新中的角色
下表显示了你在使用记录集添加、编辑或删除记录时的角色,以及框架为你所做的事情。
记录集更新:你和框架
你 | 框架 |
---|---|
确定数据源是否可更新(或是否可附加)。 | 提供 CDatabase 成员函数以测试数据源的可更新性或可附加性。 |
打开一个可更新的记录集(任何类型)。 | |
通过调用 CRecordset 更新函数(如 CanUpdate 或 CanAppend )确定记录集是否可更新。 |
|
调用记录集成员函数来添加、编辑和删除记录。 | 管理在记录集对象和数据源之间交换数据的机制。 |
或者,使用事务来控制更新过程。 | 提供 CDatabase 成员函数以支持事务。 |
有关事务的详细信息,请参阅事务 (ODBC)。
编辑缓冲区
总而言之,记录集的字段数据成员用作包含一条记录(当前记录)的编辑缓冲区。 更新操作使用此缓冲区对当前记录进行操作。
添加记录时,编辑缓冲区用于构建新记录。 当你完成添加记录时,之前的最新记录将再次变为最新记录。
当你更新(编辑)记录时,编辑缓冲区用于将记录集的字段数据成员设置为新值。 完成更新后,更新的记录仍然是最新的。
调用 AddNew 或 Edit 时,当前记录会被存储,以便以后可以根据需要恢复。 调用 Delete 时,当前记录不会被存储,而是被标记为已删除,你必须滚动到另一条记录。
注意
编辑缓冲区在记录删除中不起作用。 当你删除当前记录时,该记录被标记为已删除,并且该记录集“不在记录上”,直到你滚动到另一条记录。
动态集和快照
滚动到记录时,动态集会刷新记录的内容。 快照是记录的静态表示,因此除非你调用 Requery,否则不会刷新记录的内容。 要使用动态集的所有功能,你必须使用符合正确级别的 ODBC API 支持的 ODBC 驱动程序。 有关详细信息,请参阅 ODBC 和 Dynaset。