Після відкриття джерела даних, сесії і набір рядків об'єктів можна витягти дані. Залежно від типу оголосили, що використовується, може знадобитися прив'язати стовпців. Для вибірки даних, виконайте такі дії.:
/ / З CDBTreeView::OnQueryEdit DBViewer зразків
/ / Отримати інформацію стовпця
ULONG ulColumnsnbsp; = 0;
DBCOLUMNINFO * pColumnInfo = NULL;
LPOLESTR-pStrings = NULL;
Якщо (rs.GetColumnInfo(&ulColumns, &pColumnInfo, &pStrings)! = S_OK)
AfxThrowOLEDBException (rs.m_pRowset, IID_IColumnsInfo);
Структура MYBIND * pBind = новий MYBIND [ulColumns];
RS.CreateAccessor (sizeof(MYBIND)*ulColumns) ulColumns & pBind [0];
для (ULONG l = 0; l < ulColumns; l + +)
RS.AddBindEntry (l + 1, DBTYPE_STR, sizeof (TCHAR) * 40 & pBind [l] .szvalue, NULL & pBind[l].dwStatus);
RS.BIND()
під час (rs.Move&Next() = = S_OK)
{
nbsp; / / Додати код для вибірки даних тут
/ / Якщо ви не використовуєте функції автоматичного доступу, обслуговування rs.GetData()
}
під час (rs.Move&Next() = = S_OK)
{
nbsp; / / Використовувати члени даних безпосередньо. У цьому випадку, m_nFooID
/ / оголошений в записі користувача, що випливає з
/ / CAccessor
wsprintf ("d", rs.m_nFooID);
}
під час (rs.MoveNext() = = S_OK)
{
nbsp; / / Використовувати динамічні методи доступу функції для отримання вашої
/ / даних
ULONG-ulColumns = rs.GetColumnCount();
для (ULONG я = 0; я < ulColumns; i + +)
{
RS.GetValue(i);
}
}
під час (rs.Move&Next() = = S_OK)
{
nbsp; / / Використовувати члени дані, указаний на дзвінки абонентам
/ / AddBindEntry.
wsprintf ("%s", szFoo);
}