范例: 无 Extensions 的 ADO

该程序段说明了如何从字段检索数值并将数值转换为 C++ 变量。

#import "c:\Program Files\Common Files\System\ADO\msado15.dll"

   no_namespace rename("EOF", "EndOfFile")

#include <stdio.h>

Class CEmployee

{

public:

   FetchEmployeeData();

   char m_szFirstName[30];

   char m_szLastName[30];

   int nAge;

};

CEmployee::FetchEmployeeData()

{

_ConnectionPtr   pCon();

_RecordsetPtr    pRs();

FieldPtr         pfldFirstName, pfldLastName, pfldAge;

_variant_t      vFirstName, vLastName, vAge;

pCon.CreateInstance(__uuidof(Connection));

pCon->Open("pubs", "sa", "");

pRs.CreateInstance(__uuidof(Recordset));

pRs->Open("select FirstName, LastName, Age from Employees", pCon,

   adOpenForwardOnly, adLockReadOnly, adCmdUnknown);

pfldFirstName = pRs->Fields->GetItem(0);

pfldLastName = pRs->Fields->GetItem(1);

pfldAge = pRs->Fields->GetItem(2);

while (VARIANT_FALSE == pRs->EndOfFile)

   {

   vFirstName.Clear();

   vLastName.Clear();

   vAge.Clear();

   vFirstName = pfldFirstName->Value;

   WideCharToMultiByte(CP_ACP, 0, vFirstName.bstrVal, -1,

      m_szFirstName, sizeof(m_szFirstName), NULL, NULL);

   vLastName = pfldLastName->Value;

   WideCharToMultiByte(CP_ACP, 0, vLastName.bstrVal, -1,

      m_szLastName, sizeof(m_szLastName), NULL, NULL);

   nAge = vAge.iVal;

   pRs->MoveNext();

   }

}