18c0693f

Выборка данных


Для того чтобы приступить к выборке данных, предварительно должны быть открыты источник данных и сеанс. В зависимости от используемого типа аксессора, может потребоваться связывание данных.

На следующей схеме приведена иерархия классов аксессоров.


Класс записи должен содержать переменные члены класса, соответствующие (по типам) полям создаваемого результирующего набора.

Для извлечения данных достаточно выполнить следующие действия:

  1. Откройте результирующий набор, выполнив функцию Open.
  2. При использовании аксессора типа CManualAccessor выполните связывание столбцов.

Например:

// Получение информации о столбцах ULONG ulColumns = 0; DBCOLUMNINFO* pColumnInfo = NULL; LPOLESTR pStrings = NULL; // rc - результирующий набор if (rs.GetColumnInfo(&ulColumns, &pColumnInfo, &pStrings) != S_OK) ThrowMyOLEDBException(rs.m_pRowset, IID_IColumnsInfo); // Ошибка выполнения struct MYBIND* pBind = new MYBIND[ulColumns]; // Создание аксессора rs.CreateAccessor(ulColumns, &pBind[0], sizeof(MYBIND)*ulColumns); // Цикл по числу столбцов for (ULONG l=0; l<ulColumns; l++) rs.AddBindEntry(l+1, DBTYPE_STR, sizeof(TCHAR)*40, &pBind[l].szValue, NULL, &pBind[l].dwStatus); rs.Bind(); // Выполнение связывания // Цикл по курсору (результирующему набору) while (rs.MoveNext() == S_OK) { // Извлечение данных // Если не используется автоаксессор, то // вызывается метод rs.GetData() }

Извлечение данных выполняется согласно используемому типу аксессора:





Все публикации раздела