VisualC++ADO数据库编程入门(3)
来源:优易学  2010-1-14 18:49:56   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  2、邦定数据

  定义一个绑定类,将其成员变量绑定到一个指定的记录集,以方便于访问记录集的字段值。

  (1). 从CADORecordBinding派生出一个类:

  class CCustomRs : public CADORecordBinding

  {

  BEGIN_ADO_BINDING(CCustomRs)

  ADO_VARIABLE_LENGTH_ENTRY2(3, adVarChar, m_szau_fname, sizeof(m_szau_fname), lau_fnameStatus, false) ADO_VARIABLE_LENGTH_ENTRY2(2, adVarChar, m_szau_lname, sizeof(m_szau_lname), lau_lnameStatus, false) ADO_VARIABLE_LENGTH_ENTRY2(4, adVarChar, m_szphone, sizeof(m_szphone), lphoneStatus, true)

  END_ADO_BINDING()

  public:

  CHAR m_szau_fname[22];

  ULONG lau_fnameStatus;

  CHAR m_szau_lname[42];

  ULONG lau_lnameStatus;

  CHAR m_szphone[14];

  ULONG lphoneStatus;

  };

  其中将要绑定的字段与变量名用BEGIN_ADO_BINDING宏关联起来。每个字段对应于两个变量,一个存放字段的值,另一个存放字段的状态。字段用从1开始的序号表示,如1,2,3等等。

  特别要注意的是:如果要绑定的字段是字符串类型,则对应的字符数组的元素个数一定要比字段长度大2(比如m_szau_fname[22],其绑定的字段 au_fname的长度实际是20),不这样绑定就会失败。我分析多出的2可能是为了存放字符串结尾的空字符null和BSTR字符串开头的一个字(表示 BSTR的长度)。这个问题对于初学者来说可能是一个意想不到的问题。

  CADORecordBinding类的定义在icrsint.h文件里,内容是:

  class CADORecordBinding

  {

  public:

  STDMETHOD_(const ADO_BINDING_ENTRY*, GetADOBindingEntries) (VOID) PURE;

  };

  BEGIN_ADO_BINDING宏的定义也在icrsint.h文件里,内容是:

  #define BEGIN_ADO_BINDING(cls) public: \

  typedef cls ADORowClass; \

上一页  [1] [2] [3] [4] 下一页

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训