Sdílet prostřednictvím


Přepisování dynamicky přistupujícího objektu

Pokud používáte dynamicky přistupující objekt, například CDynamicAccessor, příkaz metody Open pro Vás automaticky vytvoří přistupující objekt na základě informace sloupce otevřené sady řádků. Můžete přepsat dynamicky přistupující objekt pro ovládání, jak přesně jsou sloupce vázány .

Chcete-li přepsat dynamicky přistupující objekt, předejte false jako poslední parametr metody CCommand::Open. To zabrání Open od vytvoření automatického přistupujícího objektu. Poté můžete zavolat GetColumnInfo a AddBindEntry pro každý sloupec, který chcete svázat. Následující kód ukazuje, jak na to:

USES_CONVERSION;
double   dblProductID;

CCommand<CDynamicAccessor> product;
// Open the table, passing false to prevent automatic binding 
product.Open(session, _T("Select * FROM Products"), NULL, NULL, DBGUID_DEFAULT, false);

ULONG         nColumns;
DBCOLUMNINFO*   pColumnInfo;
// Get the column information from the opened rowset.
product.GetColumnInfo(&nColumns, &pColumnInfo);

// Bind the product ID as a double.
pColumnInfo[0].wType          = DBTYPE_R8;
pColumnInfo[0].ulColumnSize = 8;
product.AddBindEntry(pColumnInfo[0]);

// Bind the product name as it is.
product.AddBindEntry(pColumnInfo[1]);

// Bind the reorder level as a string.
pColumnInfo[8].wType          = DBTYPE_STR;
pColumnInfo[8].ulColumnSize = 10;
product.AddBindEntry(pColumnInfo[8]);

// You have finished specifying the bindings. Go ahead and bind.
product.Bind();
// Free the memory for the column information that was retrieved in 
// previous call to GetColumnInfo.
CoTaskMemFree(pColumnInfo);

char*   pszProductName;
char*   pszReorderLevel;
bool   bRC;

// Loop through the records tracing out the information.
while (product.MoveNext() == S_OK)
{
   bRC = product.GetValue(1, &dblProductID);
   pszProductName   = (char*)product.GetValue(2);
   pszReorderLevel  = (char*)product.GetValue(9);

   ATLTRACE(_T("Override = %lf \"%s\" \"%s\"\n"), dblProductID,
      A2T(pszProductName), A2T(pszReorderLevel));
}

Viz také

Koncepty

Použití přístupových objektů