CRecordset类学习记录

CRecordset对象在MFC中用于处理数据源中的记录,分为动态集和快照两种形式。动态集实时反映数据变化,而快照是数据的静态视图。记录集操作包括打开、关闭、滚动、更新、过滤和排序等。在使用时,需要从CRecordset派生类,并通过RFX或Bulk RFX进行字段交换。记录集的Open成员函数用于指定打开类型,如动态集或快照。
摘要由CSDN通过智能技术生成

CRecordset类简介

CRecordset对象代表从一个数据源选择的一组记录的集合,被称作“记录集”。CRecordset对象可以以两种形式使用:动态集和快照。动态集是与其它用户的更新保持同步的动态数据集。快照是数据的静态视图。每一种形式都代表打开记录集时固定的一组记录。但是当滚动到动态集中的一个记录时,动态集将反映后来由其它用户或由应用程序中其它记录集对此记录所做的改变。
注意:
如果你正在使用数据访问对象(DAO)类,而不是打开数据库连接(ODBC)类,请使用类CDaoRecordset来代替。
要使用记录集,通常需要从CRecordset派生一个应用程序指定的记录集类。然后记录集从一个数据源中选择记录,就可以:
· 在这些记录中滚动。
· 更新记录并指定一种加锁模式。
· 过滤记录集,以获得那些从数据源中选择出来的可利用的记录。
· 给记录集排序。
· 参数化该记录集以定制它的具有要直到运行时才知道的信息的选项。
要使用你的类,打开一个数据库并构造一个记录集对象,给构造函数传递一个指向你的CDatabase对象的指针。然后调用记录集的Open成员函数,在此你可以指定该对象是一个动态集还是一个快照。调用Open来从数据源中选择数据。在记录集对象被打开之后,用它的成员函数和数据成员来滚动和操作记录。可用的操作根据对象是一个动态集还是一个快照(这依赖于打开数据库连接(ODBC)数据源的性能),是可更新的还是只读的,你是否实现了成组行检取而不同。为了刷新从调用Open以来可能被改变或添加的记录,可以调用对象的Requery成员函数。当你使用完对象之后,调用对象的Close成员函数,并销毁此对象。
在一个派生的CRecordset类中,使用记录字段交换(RFX)或成组记录字段交换(Bulk RFX)来支持读取和更新记录字段。
头文件包含#include <afxdb.h>

快照和动态集的区别

快照(Snapshot)是一种静态视图。当别的用户改变了记录时(包括修改、添加和删除),快照中的记录不受影响,直到调用CRecordset::Requery()函数重新查询记录集。也就是说,快照不反映别的用户对数据源记录的改变。快照的这种静态特性是相对于其他用户而言的,本身用户对记录的修改和删除会正确反映出来,但对于新添加的记录,调用Requery()函数后才能反映到快照中。
动态集是与其它用户的更新保持同步的动态数据集。当别的用户修改或删除了记录时,会在动态集中反映出来。当滚动到修改过的记录时,对其所作的修改会立即反映到动态集中,当记录被删除时,MFC代码会跳过记录集中删除的部分。对于其他用户添加的记录,调用Requery()函数后才能反映到快照中。本身用户对记录的修改、添加和删除会正确反映在动态集中。
快照和动态集有一个共同的特点,那就是在建立记录后,记录集中的成员就已经确定了,因此两种记录集都不能反映别的用户添加的记录。

CRecordset类成员

数据成员

数据成员 说明
m_hstmt 包含记录集的ODBC语句句柄。类型为HSTMT
m_nFields 包含记录集中的字段数据成员数目。类型为UINT
m_nParams 包含记录集中参数数据成员的数目。类型为UINT
m_pDatabase 包含记录集的ODBC语句句柄。类型为HSTMT
m_strFilter 包含一个CString,此对象指定一条结构式查询语言(SQL)的WHERE子句。此成员可用作一个过滤器,只选择符合某一标准的那些记录
m_strSort 包含一个CString,此对象指定一条SQL ORDERBY子句。此成员可用于控制记录的排序

构造

函数 说明
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值