Dopo aver aperto l'origine dei dati, sessione e oggetti set di righe, è possibile recuperare i dati. A seconda del tipo di funzione di accesso che si sta utilizzando, potrebbe essere necessario associare le colonne. Per recuperare dati, attenersi alla seguente procedura:
/ / Dall'esempio DBViewer CDBTreeView::OnQueryEdit
/ / Ottiene le informazioni di colonna
ULONG ulColumnsnbsp; = 0;
DBCOLUMNINFO * pColumnInfo = NULL;
LPOLESTR pStrings = NULL;
Se (rs.GetColumnInfo(&ulColumns, &pColumnInfo, &pStrings)! = S_OK)
AfxThrowOLEDBException (rs.m_pRowset, IID_IColumnsInfo);
struct MYBIND * pBind = MYBIND nuovo [ulColumns];
RS.CreateAccessor (ulColumns / pBind [0], sizeof(MYBIND)*ulColumns);
per (ULONG l = 0; l < ulColumns; l + +)
RS.AddBindEntry (l + 1, DBTYPE_STR, sizeof (TCHAR) * 40 & pBind [l] .szvalue, NULL & pBind[l].dwStatus);
RS.Bind)
mentre (rs.Move&Next () = = S_OK)
{
nbsp; / / Aggiungere il codice per recuperare i dati qui
/ / Se non si utilizza una funzione di accesso automatico, call rs.GetData)
}
mentre (rs.Move&Next () = = S_OK)
{
nbsp; / / Utilizzare direttamente i membri dati. In questo caso, m_nFooID
/ / viene dichiarato in un record utente che deriva da
/ / CAccessor
wsprintf ("%d", rs.m_nFooID);
}
mentre (rs.MoveNext () = = S_OK)
{
nbsp; / / Utilizza le funzioni di accesso dinamico per recuperare il
/ / dati
ULONG ulColumns = rs.GetColumnCount();
per (ULONG io = 0; i < ulColumns; i + +)
{
RS.GetValue(i);
}
}
mentre (rs.Move&Next () = = S_OK)
{
nbsp; / / Utilizzare i membri di dati specificati nelle chiamate a
/ / AddBindEntry.
wsprintf ("%s", szFoo);
}