Як витягти дані?

Після відкриття джерела даних, сесії і набір рядків об'єктів можна витягти дані. Залежно від типу оголосили, що використовується, може знадобитися прив'язати стовпців. Для вибірки даних, виконайте такі дії.:

  1. Відкрити набір рядків, за допомогою відповідної команди " Відкрити ".

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

Index