Como posso buscar dados?

Depois de abrir o fonte de dados, sessão e objetos de conjunto de linhas, você pode buscar dados. Dependendo do tipo de acessador que você estiver usando, talvez você precise Ligar colunas. Para buscar dados, siga estes passos:

  1. Abrir o conjunto de registros usando o apropriado comando Abrir.

  2. Se você estiver usando CManualAccessor, associe as colunas de saída, se você ainda não fez isso. Para associar as colunas, chamar GetColumnInfoe, em seguida, crie um acessador com as ligações, como mostrado aqui:
     / / De CDBTreeView::OnQueryEdit exemplo de DBViewer
    / / Obter as informações de coluna
    UlColumnsnbsp ULONG;      = 0;
    DBCOLUMNINFO * pColumnInfo = NULL;
    LPOLESTR pStrings = NULL;
    se (rs.GetColumnInfo(&ulColumns, &pColumnInfo, &pStrings)! = S_OK)
    AfxThrowOLEDBException (rs.m_pRowset, IID_IColumnsInfo);
    struct MYBIND * pBind = novo MYBIND [ulColumns];
    RS.CreateAccessor (sizeof(MYBIND)*ulColumns) ulColumns & pBind [0];
    para (ULONG l = 0; l < ulColumns; l + +)
    RS.AddBindEntry (l + 1, DBTYPE_STR, sizeof (TCHAR) * 40 & .szvalue pBind [l], NULL, & pBind[l].dwStatus);
    RS.BIND)
    
  3. Escreva um loop enquanto para recuperar os dados. Em loop, chamar MoveNext para avançar o cursor e testar o valor de retorno contra S_OK, conforme mostrado no exemplo a seguir:
    ao mesmo tempo (rs.Move&Next() = = S_OK)
    {
     nbsp; / / Adicionar código para buscar dados aqui
       / / Se você não estiver usando um acessador de auto, chamada rs.GetData)
    }
    
  4. Dentro do loop while , você pode buscar os dados de acordo com seu tipo de acessador.
    • Se você usar a classe CAccessor , você deve ter um registro de usuário que contém membros de dados. Você pode acessar os dados usando esses membros de dados, como mostrado aqui:
      ao mesmo tempo (rs.Move&Next() = = S_OK)
      {
       nbsp; / / Usar os membros de dados diretamente. Neste caso, m_nFooID
         / / é declarado em um registro de usuário que deriva de
         / / CAccessor
         wsprintf ("%d", rs.m_nFooID); 
      }
      
    • Se você usar a classe CDynamicAccessor ou CDynamicParameterAccessor , você pode buscar dados usando as funções ao acessar GetValue e GetColumn, conforme mostrado no código a seguir. Se você quiser determinar o tipo de dados que você está usando, use GetType.
      ao mesmo tempo (rs.MoveNext() = = S_OK)
      {
       nbsp; / / Use as funções do acessador dinâmico para recuperar seu
         / / dados
      
      ULONG ulColumns = rs.GetColumnCount();
         para (ULONG I = 0; i < ulColumns; i + +)
         {
           RS.GetValue(i);
         }
      }
      
    • Se você usar CManualAccessor, você deve especificar os seus próprios membros de dados, vinculá-las você mesmo e acessá-los diretamente, conforme mostrado aqui:
      ao mesmo tempo (rs.Move&Next() = = S_OK)
      {
       nbsp; / / Usar os membros de dados que você especificou nas chamadas para
         / / AddBindEntry.
      
      wsprintf ("%s", szFoo);
      }
      

Index