Crear un consumidor OLE DB

Puede utilizar el Objeto ATLAsistente y ATL COM AppWizard para generar un consumidor OLE DB plantilla .

Para crear un proyecto ATL para un consumidor OLE DB

  1. En el menú archivo , elija nuevo. Aparecerá el cuadro de diálogo Nueva.

  2. En la ficha proyectos , seleccione ATL COM AppWizard.

    Nombre del proyecto en la ficha proyectos y, a continuación, haga clic en Aceptar. Aparece el Asistente para aplicaciones COM de ATL.

  3. En el Asistente para aplicaciones de ATL COM, elija un tipo de proyecto.

  4. Haga clic en Finalizar y Aceptar.

A continuación, utilice al Asistente para objetos ATL.

Para utilizar al Asistente para objetos ATL

  1. En el menú Insertar , elija Nuevo objeto ATL. Aparece el Asistente para objetos ATL.

  2. En el panel izquierdo, seleccione Acceso a datos. El icono de consumidor aparece en el panel derecho.

  3. Seleccione el icono de consumidor y haga clic en siguiente. Aparecerá el cuadro de diálogo de Propiedades del objeto Asistente de ATL .

Utilice al Asistente para objetos ATL para establecer las propiedades para el consumidor.

Para establecer las propiedades del consumidor mediante el Asistente para objetos ATL

  1. En el cuadro de diálogo Propiedades del objeto Asistente de ATL , haga clic en el botón Seleccionar origen de datos . Aparecerá el cuadro de diálogo Crear nuevo Datalink .

  2. En el cuadro de diálogo Crear nuevo vínculo de datos , seleccione un proveedor de OLE DB y opciones adecuadas, incluyendo:
    • Ubicación y datos de origen de los datos a ser utilizados por el proveedor.

    • ID de inicio de sesión y contraseña para el origen de datos.

    Después de seleccionar el proveedor y otras configuraciones, haga clic en Probar conexión para comprobar las selecciones realizadas en las páginas del cuadro de diálogo anteriores. Si el cuadro de resultados de informes PASSED , haga clic en Finalizar para crear el enlace de datos. Aparecerá el cuadro de diálogo Seleccionar tabla de base de datos.

  3. En el cuadro de diálogo Seleccionar tabla de base de datos , utilice el control de árbol para seleccionar una tabla, consulta o procedimiento almacenado y haga clic en Aceptar. Volver al cuadro de diálogo Propiedades del objeto Asistente de ATL.

  4. El cuadro de diálogo rellena los nombres para el Nombre corto, clase, descriptor de accesoy .H archivo. Los cuatro últimos se basan en el nombre corto. Puede editar estos nombres si lo desea.

  5. El asistente crea un CCommand-base de consumidores por defecto. Si prefiere un CTable-base de consumidores, seleccione el botón de tabla.

  6. Elija cambiar, Insertary Eliminar para cambiar, insertar y eliminar registros en el conjunto de filas, si es necesario.

  7. Haga clic en Aceptar.

Los generadores de Asistente para una clase de descriptor de acceso y una clase de comando (o tabla), como se muestra en el ejemplo de salida por debajo. La clase de comando contiene código para abrir el origen de datos y el conjunto de filas especificado en el asistente. La clase de descriptor de acceso contiene un mapa de la columna de la tabla de base de datos seleccionado.

// Product.H : Declaration of the CProduct class
#ifndef __PRODUCT_H_
#define __PRODUCT_H_
class CProductAccessor
{
public:
   LONG m_ProductID;   // Number automatically assigned to new product.
   TCHAR m_ProductName[41];   // Number automatically assigned to new product.
   LONG m_SupplierID;   // Same entry as in Suppliers table.
   LONG m_CategoryID;   // Same entry as in Categories table.
   TCHAR m_QuantityPerUnit[21];   // (e.g., 24-count case, 1-liter bottle).
   DB_NUMERIC m_UnitPrice;   // (e.g., 24-count case, 1-liter bottle).
   SHORT m_UnitsInStock;   // (e.g., 24-count case, 1-liter bottle).
   SHORT m_UnitsOnOrder;   // (e.g., 24-count case, 1-liter bottle).
   SHORT m_ReorderLevel;   // Minimum units to maintain in stock.
   VARIANT_BOOL m_Discontinued;   // Yes means item is no longer available.

BEGIN_COLUMN_MAP(CProductAccessor)
   COLUMN_ENTRY(1, m_ProductID)
   COLUMN_ENTRY(2, m_ProductName)
   COLUMN_ENTRY(3, m_SupplierID)
   COLUMN_ENTRY(4, m_CategoryID)
   COLUMN_ENTRY(5, m_QuantityPerUnit)
   COLUMN_ENTRY(6, m_UnitPrice)
   COLUMN_ENTRY(7, m_UnitsInStock)
   COLUMN_ENTRY(8, m_UnitsOnOrder)
   COLUMN_ENTRY(9, m_ReorderLevel)
   COLUMN_ENTRY_TYPE(10, DBTYPE_BOOL, m_Discontinued)
END_COLUMN_MAP()
DEFINE_COMMAND(CProductAccessor, _T(" \
   SELECT \
      ProductID, \
      ProductName, \
      SupplierID, \
      CategoryID, \
      QuantityPerUnit, \
      UnitPrice, \
      UnitsInStock, \
      UnitsOnOrder, \
      ReorderLevel, \
      Discontinued  \
      FROM Products"))};
class CProduct : public CCommand<CAccessor<CProductAccessor> >
{
public:
   HRESULT Open()
   {
      HRESULT      hr;
      hr = OpenDataSource();
      if (FAILED(hr))
         return hr;
      return OpenRowset();
   }
   HRESULT OpenDataSource()
   {
      HRESULT      hr;
      CDataSource db;
      CDBPropSet   dbinit(DBPROPSET_DBINIT);
      dbinit.AddProperty(DBPROP_INIT_DATASOURCE, OLESTR("OLE_DB_NWind_Jet"));
      dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);
      dbinit.AddProperty(DBPROP_INIT_LCID, (long)1033);
      hr = db.Open(_T("MSDASQL"), &dbinit);
      if (FAILED(hr))
         return hr;
      return m_session.Open(db);
   }
   HRESULT OpenRowset()
   {
      // Set properties for open
      CDBPropSet   propset(DBPROPSET_ROWSET);
      propset.AddProperty(DBPROP_IRowsetChange, true);
      propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE);
      return CCommand<CAccessor<CProductAccessor> >::Open(m_session, NULL, &propset);
   }
   CSession   m_session;
};
#endif // __PRODUCT_H_

Volver a utilizar las plantillas de consumidor DB OLE

Index