Création d'un consommateur de DB OLE

Vous pouvez utiliser l'Objet ATLAssistant et ATL COM AppWizard pour générer un consommateur des modèles OLE DB .

Pour créer un projet ATL pour un consommateur OLE DB

  1. Dans le menu fichier , choisissez nouveau. La boîte de dialogue nouveau apparaît.

  2. Sous l'onglet projets , sélectionnez ATL COM AppWizard.

    Nommez le projet sous l'onglet projets , puis cliquez sur OK. ATL COM AppWizard apparaît.

  3. Dans ATL COM AppWizard, sélectionnez un type de projet.

  4. Cliquez sur terminer et OK.

Ensuite, utilisez l'Assistant objet ATL.

Pour utiliser l'Assistant objet ATL

  1. Dans le menu Insérer , choisissez Nouvel objet ATL. L'Assistant objet ATL apparaît.

  2. Dans le volet de gauche, choisissez l'Accès aux données. L'icône consommateur apparaît dans le volet de droite.

  3. Sélectionnez l'icône consommateur et cliquez sur suivant. La boîte de dialogue Propriétés de l'Assistant objet ATL apparaît.

Utilisez l'Assistant objet ATL pour définir les propriétés de votre consommation.

Pour définir les propriétés du consommateur à l'aide de l'Assistant objet ATL

  1. Dans la boîte de dialogue Propriétés de l'Assistant objet ATL , cliquez sur le bouton Sélectionner Datasource . Affiche la boîte de dialogue Créer un nouvelle liaison de données .

  2. Dans la boîte de dialogue Créer un nouvelle liaison de données , sélectionnez un fournisseur OLE DB et les options appropriées, y compris:
    • Source de données et l'emplacement pour les données qui seront utilisées par le fournisseur.

    • ID de connexion et mot de passe pour votre source de données.

    Après avoir sélectionné votre fournisseur et autres paramètres, cliquez sur Tester la connexion pour vérifier les sélections effectuées dans les pages précédentes de la boîte de dialogue. Si la zone résultats rapports PASSED , cliquez sur terminer pour créer la liaison de données. Affiche la boîte de dialogue Sélectionner la Table de base de données.

  3. Dans la boîte de dialogue Sélectionner la Table de base de données , utilisez le contrôle d'arborescence pour sélectionner une table, la requête ou la procédure stockée, puis cliquez sur OK. Vous revenez à la boîte de dialogue Propriétés de l'Assistant objet ATL.

  4. La boîte de dialogue renseigne les noms pour le Nom court, classe, accesseuret .H fichier. Les quatre derniers sont basées sur le nom court. Vous pouvez modifier ces noms si désiré.

  5. L'Assistant crée un CCommand-consommateur basé sur par défaut. Si vous préférez une CTable-base de consommateurs, cliquez sur le bouton tableau.

  6. Choisissez le changement, Insertet Delete à l'appui de la modification, insertion et suppression d'enregistrements dans le jeu de lignes, si nécessaire.

  7. Cliquez sur OK.

Les générateurs Assistant une classe d'accesseur et une classe de commande (ou table), comme illustré dans l'exemple de sortie ci-dessous. La classe de commande contient le code pour ouvrir la source de données et les lignes que vous avez spécifié dans l'Assistant. La classe d'accesseur contient un mappage de colonnes pour la table de base de données que vous avez sélectionné.

// 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_

Retour à utiliser les modèles OLE DB

Index