理解 Visual C++ Extensions for ADO(3)
■结束数据绑定
END_ADO_BINDING()
参数: 描述
Class: 绑定单元和C/C++变量定义所在的类。
Ordinal: 序数类型,从1开始计数的Recordset字段序号,该字段对应于指定的C/C++变量。
DataType: 和ADO中的数据类型等价的C/C++数据类型。相应的Recordset字段在需要时将转换为该数据类型。
Buffer: 用来存储Recordset字段的缓冲区名称。
Size: 缓冲区的最大尺寸。
Status: 状态位。指示缓冲区的内容的有效性,以及字段转换是否成功。其中有两个比较重要的值。一个是adFldOK, 表明转换是成功的;另一个是adFldNull, 表明字段值为NULL。更多的状态值,请参考MSDN
Modify: 布尔类型。如果为TRUE, 表明ADO允许更新缓冲区中的数据。如果为FALSE,表明数据是只读的。
Precision:
数值类型的精度。
Scale: 数值类型的小数位数。Number of decimal places in a numeric variable.
Length:
一个四字节的变量。用来包含缓冲区中数据的实际长度。
【Visual C++ Extensions 例程】
//引入msado15.dll文件,从而声明了ADO类型库
#import "c:Program FilesCommon FilesSystemADOmsado15.dll" no_namespace rename("EOF", "EndOfFile")
#include
#include file://在此处包含icrsint.h头文件
file://_COM_SMARTPTR_TYPEDEF 宏定义了一个_com_ptr_t类型的智能(smart)指针IADORecordBingingPtr
_COM_SMARTPTR_TYPEDEF(IADORecordBinding, __uuidof(IADORecordBinding));
file://定义一个测试函数
inline void TESTHR(HRESULT _hr) { if FAILED(_hr) _com_issue_error(_hr); }
file://定义一个派生自CADORecordBinding的类
class CCustomRs : public CADORecordBinding
{
file://开始进行数据类型绑定
BEGIN_ADO_BINDING(CCustomRs)
file://把Recordset的第2个adVarChar类型的字段绑定到C/C++变量m_ch_fname上
ADO_VARIABLE_LENGTH_ENTRY2(2, adVarChar, m_ch_fname,
sizeof(m_ch_fname), m_ul_fnameStatus, false)
ADO_VARIABLE_LENGTH_ENTRY2(4, adVarChar, m_ch_lname,
sizeof(m_ch_lname), m_ul_lnameStatus, false)
file://结束绑定
END_ADO_BINDING()
file://紧接着定义上述宏中用到的C/C++变量
public:
CHAR m_ch_fname[22];
CHAR m_ch_lname[32];
ULONG m_ul_fnameStatus;
ULONG m_ul_lnameStatus;
};

