记录字段交换:使用 RFX 函数
本主题说明如何使用组成 DoFieldExchange 重写体的 RFX 函数调用。
备注
本主题适用于从 CRecordset 派生的类,这些类中尚未实现批量取行。如果使用的是批量取行,则实现批量记录字段交换 (Bulk RFX)。Bulk RFX 与 RFX 类似。若要了解其中的差别,请参见记录集:批量获取记录 (ODBC)。
RFX 全局函数在数据源上的列和记录集中的字段数据成员之间交换数据。 在记录集的 DoFieldExchange 成员函数中写 RFX 函数调用。 本主题简要描述这些函数并显示可对其使用 RFX 函数的数据类型。 技术说明 43 描述如何为其他数据类型编写自己的 RFX 函数。
RFX 函数语法
每个 RFX 函数采用三个参数(有些 RFX 函数采用第四个或第五个可选参数):
指向 CFieldExchange 对象的指针。 您只需顺着传递到 DoFieldExchange 的 pFX 指针进行传递。
列在数据源上出现时的名称。
记录集类中相应的字段数据成员或参数数据成员的名称。
(可选)在一些函数中,所传输的字符串或数组的最大长度。 默认为 255 个字节,但您可能需要更改它。 最大大小基于 CString 对象的最大大小(INT_MAX (2,147,483,647) 字节),但在达到该大小前可能会遇到驱动程序限制。
(可选)在 RFX_Text 函数中,有时使用第五个参数来指定列的数据类型。
有关更多信息,请参见 Class Library Reference 中宏和全局下的 RFX 函数。 有关参数特殊用法的示例,请参见 记录集:获取 SUM 及其他聚合结果 (ODBC)。
RFX 数据类型
类库提供了用于在数据源和记录集之间传输多种不同数据类型的 RFX 函数。 下表按数据类型总结了 RFX 函数。 如果您必须自行编写 RFX 函数调用,则可以按数据类型从这些函数中进行选择。
功能 |
数据类型 |
---|---|
RFX_Bool |
BOOL |
RFX_Byte |
BYTE |
RFX_Binary |
CByteArray |
RFX_Double |
double |
RFX_Single |
float |
RFX_Int |
int |
RFX_Long |
long |
RFX_LongBinary |
CLongBinary |
RFX_Text |
CString |
RFX_Date |
CTime |
有关更多信息,请参见 Class Library Reference 中宏和全局下的 RFX 函数文档。 有关 C++ 数据类型如何映射到 SQL 数据类型的信息,请参见 SQL:SQL 和 C++ 数据类型 (ODBC) 中的表“映射到 C++ 数据类型的 ANSI SQL 数据类型”。