Compartilhar via


Buscando dados

Depois de em em aberto a fonte de dados, sessão e objetos de conjunto de linhas, você pode buscar dados.Dependendo do tipo de acessador que você está usando, convém BIND colunas.

Para buscar dados

  1. Abra o conjunto de linhas usando o apropriado em abertocomando .

  2. Se você estiver usando CManualAccessor, BIND as colunas de saída se você ainda não fez isso. Para BIND sistema autônomo colunas, telefonar GetColumnInfoe, em seguida, crie um acessador com sistema autônomo ligações, conforme mostrado no exemplo a seguir:

    // From the DBViewer Sample CDBTreeView::OnQueryEdit
    // Get the column information
    ULONG ulColumns       = 0;
    DBCOLUMNINFO* pColumnInfo  = NULL;
    LPOLESTR pStrings      = NULL;
    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();
    
  3. Escrever um while Faça um loop para recuperar os dados. No loop, chame MoveNext para avançar o cursor e testar o valor retornado com S_OK, conforme mostrado no exemplo a seguir:

    while (rs.MoveNext() == S_OK)
    {
        // Add code to fetch data here
        // If you are not using an auto accessor, call rs.GetData()
    }
    
  4. Dentro de while loop, você pode buscar os dados de acordo com para seu tipo de acessador.

    • Se você usar o CAccessor classe, você deve ter um registro de usuário que contém membros de dados.Você pode acesso seus dados usando sistema autônomo membros de dados, conforme mostrado no exemplo a seguir:

      while (rs.MoveNext() == S_OK)
      {
          // Use the data members directly. In this case, m_nFooID
          // is declared in a user record that derives from
          // CAccessor
          wsprintf_s("%d", rs.m_nFooID); 
      }
      
    • Se você usar o CDynamicAccessor ou CDynamicParameterAccessor classe, você pode buscar dados usando sistema autônomo funções de acesso GetValue e GetColumn, conforme mostrado no exemplo a seguir. Se você quiser determinar o tipo de dados que você está usando, use GetType.

      while (rs.MoveNext() == S_OK)
      {
          // Use the dynamic accessor functions to retrieve your data.
      
          ULONG ulColumns = rs.GetColumnCount();
          for (ULONG i=0; i<ulColumns; i++)
          {
              rs.GetValue(i);
          }
      }
      
    • Se você usar CManualAccessor, você deve especificar seus próprios membros de dados, ligá-los e acessá-los diretamente, sistema autônomo mostrado no exemplo a seguir:

      while (rs.MoveNext() == S_OK)
      {
          // Use the data members you specified in the calls to
          // AddBindEntry.
      
          wsprintf_s("%s", szFoo);
      }
      

Consulte também

Referência

Trabalhando com modelos OLE DB consumidor