CRecordset
CRecordset对象代表从一个数据源选择的一组记录的集合,被称作“记录集”。CRecordset对象可以以两种形式使用:动态集和快照。动态集是与其它用户的更新保持同步的动态数据集。快照是数据的静态视图。每一种形式都代表打开记录集时固定的一组记录。但是当滚动到动态集中的一个记录时,动态集将反映后来由其它用户或由应用程序中其它记录集对此记录所做的改变。
注意:
如果你正在使用数据访问对象(DAO)类,而不是打开数据库连接(ODBC)类,请使用类CDaoRecordset来代替。
要使用任何一种记录集,通常需要从CRecordset派生一个应用程序指定的记录集类。记录集从一个数据源中选择记录,然后你就可以:
要使用你的类,打开一个数据库并构造一个记录集对象,给构造函数传递一个指向你的CDatabase对象的指针。然后调用记录集的Open成员函数,在此你可以指定该对象是一个动态集还是一个快照。调用Open来从数据源中选择数据。在记录集对象被打开之后,用它的成员函数和数据成员来滚动和操作记录。可用的操作根据对象是一个动态集还是一个快照(这依赖于打开数据库连接(ODBC)数据源的性能),是可更新的还是只读的,你是否实现了成组行检取而不同。为了刷新从调用Open以来可能被改变或添加的记录,可以调用对象的Requery成员函数。当你使用完对象之后,调用对象的Close成员函数,并销毁此对象。
在一个派生的CRecordset类中,使用记录字段交换(RFX)或成组记录字段交换(Bulk RFX)来支持读取和更新记录字段。
#include <afxdb.h>
请参阅:CDatabase, CRecordView
CRecordset类成员
数据成员
构造
记录集属性
记录集更新操作
记录集定位操作
其他记录集操作
记录集重载函数
CObject |
└CRecordset |
CRecordset对象代表从一个数据源选择的一组记录的集合,被称作“记录集”。CRecordset对象可以以两种形式使用:动态集和快照。动态集是与其它用户的更新保持同步的动态数据集。快照是数据的静态视图。每一种形式都代表打开记录集时固定的一组记录。但是当滚动到动态集中的一个记录时,动态集将反映后来由其它用户或由应用程序中其它记录集对此记录所做的改变。
注意:
如果你正在使用数据访问对象(DAO)类,而不是打开数据库连接(ODBC)类,请使用类CDaoRecordset来代替。
要使用任何一种记录集,通常需要从CRecordset派生一个应用程序指定的记录集类。记录集从一个数据源中选择记录,然后你就可以:
· | 在这些记录中滚动。 |
· | 更新记录并指定一种加锁模式。 |
· | 过滤记录集,以获得那些从数据源中选择出来的可利用的记录。 |
· | 给记录集排序。 |
· | 参数化该记录集以定制它的具有要直到运行时才知道的信息的选项。 |
在一个派生的CRecordset类中,使用记录字段交换(RFX)或成组记录字段交换(Bulk RFX)来支持读取和更新记录字段。
#include <afxdb.h>
请参阅:CDatabase, CRecordView
CRecordset类成员
数据成员
m_hstmt | 包含记录集的ODBC语句句柄。类型为HSTMT |
m_nFields | 包含记录集中的字段数据成员数目。类型为UINT |
m_nParams | 包含记录集中参数数据成员的数目。类型为UINT |
m_pDatabase | 包含一个指向CDatabase对象的指针,提供该指针将记录集连接到一个数据源 |
m_strFilter | 包含一个CString,此对象指定一条结构式查询语言(SQL)的WHERE子句。此成员可用作一个过滤器,只选择符合某一标准的那些记录 |
m_strSort | 包含一个CString,此对象指定一条SQL ORDERBY子句。此成员可用于控制记录的排序 |
构造
CRecordset | 构造一个CRecordset对象。应用程序的派生类必须提供一个调用此函数的构造函数 |
Open | 通过检取记录集表示的表格或执行查询来打开记录集 |
Close | 关闭记录集和与此记录集相关联的ODBC HSTMT |
记录集属性
CanAppend | 如果新记录可以通过 |
AddNew | 成员函数增加到记录集中,则该函数返回一个非零值 |
CanBookmark | 如果记录集支持书签则函数返回一个非零值 |
CanRestart | 如果可以调用Requery来再次运行记录集的查询,则该函数返回一个非零值 |
CanScroll | 如果应用程序可以滚动记录,则该函数返回一个非零值 |
CanTransact | 如果数据源支持事务,则该函数返回一个非零值 |
CanUpdate | 如果记录集可修改(应用程序可以增加、修改或删除记录),则该函数返回一个非零值 |
GetODBCFieldCount | 返回记录集中的字段数目 |
GetRecordCount | 返回记录集中的记录数目 |
GetStatus | 获取记录集的状态:读取记录的索引,以及是否已获取到记录的最终计数 |
GetTableName | 获取此记录集基于的表的名字 |
GetSQL | 获取用于选择记录集的记录的SQL字符串 |
IsOpen | 如果前面已经调用了Open函数,则此函数返回一个非零值 |
IsBOF | 如果记录集已经定位在第一个记录前,则此函数返回一个非零值 |
IsEOF | 如果记录集已经定位在最后一个记录后,则此函数返回一个非零值 |
IsDeleted | 如果记录集定位在一个已删除的记录上,则该函数返回一个非零值 |
记录集更新操作
AddNew | 为增加新记录作准备。调用Update来完成增加 |
CancelUpdate | 取消任何用AddNew或Edit操作指定的未决定的更新 |
Delete | 从记录集中删除当前记录。删除之后,应用程序必须显式地滚动到另一个记录 |
Edit | 为改变当前记录作准备。调用Update来完成编辑 |
Update | 通过将新数据或所编辑的数据保存到数据源上,来完成一次AddNew或Edit操作 |
记录集定位操作
GetBookMark | 将一个记录的标签值分配给该参数对象 |
Move | 将记录集双向定位到距离当前记录指定数目的记录的位置 |
MoveFirst | 定位当前记录为记录集中的第一个记录。该函数首先测试IsBOF |
MoveLast | 定位当前记录为记录集中的最后一个记录。该函数首先测试IsEOF |
MoveNext | 定位当前记录为记录集中的下一个记录。该函数首先测试IsEOF |
MovePrev | 定位当前记录为记录集中的第一个记录。该函数首先测试IsBOF |
SetAbsolutePosition | 将记录集定位到与指定的记录数相对应的位置 |
SetBookmark | 定位记录集到书签指定的位置 |
其他记录集操作
Cancel | 取消一次异步操作或一次来自第二线程的处理 |
FlushResultSet | 当使用一个预定义的查询时,如果有另外一个结果被获取,返回非零值 |
GetFieldValue | 返回记录集中的一个字段的值 |
GetODBCFieldInfo | 返回记录集中各字段的指定类别的信息 |
GetRowsetSize | 返回在一次单个获取中你要获取的记录数目 |
GetRowsFetched | 返回在一次获取中实际获取的行数 |
GetRowStatus | 返回在一次获取中行的状态 |
IsFieldDirty | 如果在当前记录中的指定字段被改变,则返回一个非零值 |
IsFieldNull | 如果当前记录中的指定字段是Null(没有值),则返回非零值 |
IsFieldNullable | 如果当前记录中的指定字段可被设置为Null(没有值),则返回非零值 |
RefreshRowset | 刷新指定行的数据和状态 |
Requery | 再次运行记录集的查询来刷新所选择的记录 |
SetFieldDirty | 标记当前记录中的指定字段是被改变的 |
SetFieldNull | 设置当前记录中的指定字段的值为Null(没有值) |
SetLockingMode | 将加锁模式设置为“乐观”加锁(缺省值)或“悲观”加锁。确定任何更新加锁记录 |
SetParamNull | 将指定的参数设置为Null(没有值) |
SetRowsetCursorPosition | 将游标定位在记录集中的指定行上 |
记录集重载函数
Check | 用来检查从一个ODBC API函数返回的代码 |
CheckRowSetError | 用来处理在获取记录期间产生的错误 |
DoBulkFieldExchange | 用来将一组数据行从数据源中交换到记录集中。实现成组记录交换(Bulk RFX) |
DoFieldExchange | 用来在此记录集的字段数据成员和数据源上对应的记录之间交换数据(双向)。双向记录字段交换(RFX) |
GetDefaultConnect | 用来获取缺省的字符串 |
GetDefaultSQL | 用来获取要执行的缺省的SQL字符串 |
OnSetOptions | 用来为指定的ODBC语句设置选项 |
SetRowsetSize | 指定在一次获取中你希望获取的记录数目 |