Как получить данные?

После открытия источника данных, сессии и объектов набора строк, можно производить выборку данных. В зависимости от типа доступа, который вы используете, вам может потребоваться привязать столбцы. Для выборки данных, выполните следующие действия:

  1. Откройте набор строк с помощью соответствующей команды Открыть.

  2. Если вы используете CManualAccessor, привяжите выходные столбцы, если вы еще не сделали этого. Для привязки столбцов, вызовите GetColumnInfo, а затем создать метод доступа с привязками, как показано здесь:
     / / От образец 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()
    
  3. Напишите в то время как петля для извлечения данных. В цикле вызовите метод MoveNext для продвижения курсор и проверять возвращаемое значение против S_OK, как показано в следующем примере:
    во время (СР.Move&Next() == S_OK)
    {
     nbsp; / / Добавить код для извлечения данных здесь
       / / Если вы не используете автоматический метод доступа, вызовите rs.GetData()
    }
    
  4. В цикл while можно производить выборку данных по типу вашего доступа.
    • Если используется класс CAccessor , необходимо иметь пользовательской записи, содержащей элементы данных. Вы можете доступ к вашим данным с использованием этих данных членов, как показано здесь:
      во время (СР.Move&Next() == S_OK)
      {
       nbsp; / / Использовать члены данных напрямую. В данном случае, m_nFooID
         / / объявляется в записи пользователя, который является производным от
         / / CAccessor
         wsprintf («%d», rs.m_nFooID); 
      }
      
    • Если вы используете класс CDynamicAccessor или CDynamicParameterAccessor , можно производить выборку данных, используя доступ к функции GetValue и GetColumn, как показано в следующем коде. Если требуется определить тип данных, который вы используете, следует используйте метод GetType.
      во время (СР.MoveNext() == S_OK)
      {
       nbsp; / / Использовать функции динамического метода доступа для получения вашего
         / / данные
      
      ULONG ulColumns = rs.GetColumnCount();
         для (ULONG I = 0; I < ulColumns; i ++)
         {
           RS.GetValue(i);
         }
      }
      
    • Если вы используете CManualAccessor, необходимо указать собственные элементы данных, связать их и получить к ним доступ напрямую, как показано здесь:
      во время (СР.Move&Next() == S_OK)
      {
       nbsp; / / Использовать члены данных, указанный в вызовы
         / / AddBindEntry.
      
      wsprintf ("%s", szFoo);
      }
      

Index