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