Come a recuperare i dati?

Dopo aver aperto l'origine dei dati, sessione e oggetti set di righe, è possibile recuperare i dati. A seconda del tipo di funzione di accesso che si sta utilizzando, potrebbe essere necessario associare le colonne. Per recuperare dati, attenersi alla seguente procedura:

  1. Aprire il rowset mediante apposito comando Apri.

  2. Se si utilizza CManualAccessor, associare le colonne di output se non l'hai già fatto. Per associare le colonne, chiamare GetColumnInfo, quindi creare una funzione di accesso con le associazioni, come illustrato di seguito:
     / / Dall'esempio DBViewer CDBTreeView::OnQueryEdit
    / / Ottiene le informazioni di colonna
    ULONG ulColumnsnbsp;      = 0;
    DBCOLUMNINFO * pColumnInfo = NULL;
    LPOLESTR pStrings = NULL;
    Se (rs.GetColumnInfo(&ulColumns, &pColumnInfo, &pStrings)! = S_OK)
    AfxThrowOLEDBException (rs.m_pRowset, IID_IColumnsInfo);
    struct MYBIND * pBind = MYBIND nuovo [ulColumns];
    RS.CreateAccessor (ulColumns / pBind [0], sizeof(MYBIND)*ulColumns);
    per (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. Scrivere un ciclo mentre per recuperare i dati. Nel ciclo, chiamare MoveNext per avanzare il cursore e verificare il valore restituito contro S_OK, come illustrato nell'esempio seguente:
    mentre (rs.Move&Next () = = S_OK)
    {
     nbsp; / / Aggiungere il codice per recuperare i dati qui
       / / Se non si utilizza una funzione di accesso automatico, call rs.GetData)
    }
    
    
  4. All'interno del ciclo mentre , è possibile recuperare i dati di base al vostro tipo di accesso.
    • Se si utilizza la classe CAccessor , si dovrebbe avere un record utente che contiene membri dati. Si possono accedere ai dati utilizzando tali membri dati, come illustrato di seguito:
      mentre (rs.Move&Next () = = S_OK)
      {
       nbsp; / / Utilizzare direttamente i membri dati. In questo caso, m_nFooID
         / / viene dichiarato in un record utente che deriva da
         / / CAccessor
         wsprintf ("%d", rs.m_nFooID); 
      }
      
      
    • Se si utilizza la classe CDynamicAccessor o CDynamicParameterAccessor , è possibile recuperare i dati utilizzando le funzioni di accesso GetValue e GetColumn, come mostrato nel codice seguente. Se si desidera determinare il tipo di dati che si sta utilizzando, utilizzare GetType.
      mentre (rs.MoveNext () = = S_OK)
      {
       nbsp; / / Utilizza le funzioni di accesso dinamico per recuperare il
         / / dati
      
      ULONG ulColumns = rs.GetColumnCount();
         per (ULONG io = 0; i < ulColumns; i + +)
         {
           RS.GetValue(i);
         }
      }
      
      
    • Se si utilizza CManualAccessor, deve specificare i proprio i membri dati, li legano te stesso e accedervi direttamente, come illustrato di seguito:
      mentre (rs.Move&Next () = = S_OK)
      {
       nbsp; / / Utilizzare i membri di dati specificati nelle chiamate a
         / / AddBindEntry.
      
      wsprintf ("%s", szFoo);
      }
      
      

Index