¿Cómo recuperar datos?

Después de abrir el origen de datos, sesión y objetos de conjunto de filas, puede recuperar datos. Dependiendo del tipo de descriptor de acceso que está utilizando, puede que necesite enlazar columnas. Para recuperar datos, siga estos pasos:

  1. Abrir el conjunto de filas mediante el correspondiente comando Abrir.

  2. Si está utilizando CManualAccessor, enlazar las columnas de salida si aún no lo ha hecho. Para enlazar las columnas, llamada GetColumnInfoy, a continuación, crear un descriptor de acceso con los enlaces, como se muestra aquí:
     / / Desde el CDBTreeView::OnQueryEdit ejemplo DBViewer
    / / Obtener la información de columna
    ULONG ulColumnsnbsp;      = 0;
    DBCOLUMNINFO * pColumnInfo = NULL;
    LPOLESTR pStrings = NULL;
    Si (rs.GetColumnInfo(&ulColumns, &pColumnInfo, &pStrings)! = S_OK)
    AfxThrowOLEDBException (rs.m_pRowset, IID_IColumnsInfo);
    struct MYBIND * pBind = nuevo MYBIND [ulColumns];
    RS.CreateAccessor (ulColumns & pBind [0], sizeof(MYBIND)*ulColumns);
    para (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. Escribir un bucle while para recuperar los datos. En el bucle, llamar a MoveNext para hacer avanzar el cursor y probar el valor devuelto contra S_OK, como se muestra en el ejemplo siguiente:
    mientras (rs.Move&Next() == S_OK)
    {
     nbsp; / / Agregar código para recuperar datos aquí
       / / Si no está utilizando un descriptor de acceso automático, llamada rs.GetData()
    }
    
  4. Dentro del bucle while , puede recuperar los datos de acuerdo con su tipo de descriptor de acceso.
    • Si utiliza la clase CAccessor , debe tener un registro de usuario que contiene a miembros de datos. Puede acceder a sus datos mediante los miembros de datos, como se muestra aquí:
      mientras (rs.Move&Next() == S_OK)
      {
       nbsp; / / Utilizar los miembros de datos directamente. En este caso, m_nFooID
         / / se declara en un registro de usuario que se derive de
         / / CAccessor
         wsprintf ("%d", rs.m_nFooID); 
      }
      
    • Si utiliza la clase CDynamicAccessor o CDynamicParameterAccessor , puede recuperar datos mediante las funciones de acceso a GetValue y GetColumn, como se muestra en el siguiente código. Si desea determinar el tipo de datos que está utilizando, use GetType.
      mientras (rs.MoveNext() == S_OK)
      {
       nbsp; / / Utilizar las funciones de descriptor de acceso dinámico para recuperar su
         / / datos
      
      ULONG ulColumns = rs.GetColumnCount();
         para (ULONG I = 0; i < ulColumns; i ++)
         {
           RS.GetValue(i);
         }
      }
      
    • Si usas CManualAccessor, debe especificar a los propios miembros de datos, enlazarlos usted mismo y acceder a ellos directamente, como se muestra aquí:
      mientras (rs.Move&Next() == S_OK)
      {
       nbsp; / / Especificados en las convocatorias a los miembros de datos de uso
         / / AddBindEntry.
      
      wsprintf ("%s", szFoo);
      }
      

Index