Creazione di un Consumer OLE DB

È possibile utilizzare l'Oggetto ATLguidata e ATL COM AppWizard per generare un consumer OLE DB Template .

Per creare un progetto ATL per un consumer OLE DB

  1. Scegliere nuovodal menu File . Viene visualizzata la finestra di dialogo New.

  2. Scegliere la scheda progetti ATL COM AppWizard.

    Nome del progetto nella scheda progetti , quindi fare clic su OK. La creazione guidata applicazione COM ATL appare.

  3. In creazione guidata applicazione COM ATL, scegliere un tipo di progetto.

  4. Fare clic su OK e finitura.

Successivamente, utilizzare la creazione guidata oggetto.

Per utilizzare la creazione guidata oggetto

  1. Dal menu Inserisci , scegliere Nuovo oggetto ATL. La creazione guidata oggetto appare.

  2. Nel riquadro sinistro, scegliere L'accesso ai dati. L'icona del consumatore viene visualizzata nel riquadro destro.

  3. Selezionare l'icona del consumatore e fare clic su avanti. Viene visualizzata la finestra di dialogo Proprietà dell'oggetto ATL Wizard .

Utilizzare la creazione guidata oggetto per impostare le proprietà per il consumatore.

Per impostare le proprietà dei consumatori utilizzando la creazione guidata oggetto

  1. Nella finestra di dialogo Proprietà dell'oggetto ATL guidata , fare clic sul pulsante Seleziona Datasource . Viene visualizzata la finestra di dialogo Crea nuova Datalink .

  2. Nella finestra di dialogo Crea nuova Datalink , scegli un Provider OLE DB e le opzioni appropriate, tra cui:
    • Fonte dati e posizione di essere utilizzato dal Provider di dati.

    • ID di accesso e la password per l'origine dati.

    Dopo aver selezionato il tuo provider e altre impostazioni, fare clic su Connessione di prova per verificare le selezioni effettuate nelle pagine precedenti di casella di dialogo. Se la casella risultati segnala PASSED , fare clic su fine per creare il collegamento dati. Viene visualizzata la finestra di dialogo Seleziona tabella del Database.

  3. Nella finestra di dialogo Seleziona tabella del Database , utilizzare il controllo struttura per selezionare una tabella, la query o la stored procedure e fare clic su OK. Si torna alla finestra di dialogo Proprietà dell'oggetto ATL Wizard.

  4. Nella finestra di dialogo riempie i nomi per il Nome breve, classe, della funzione di accessoe .File h. Le ultime quattro sono basate sul nome breve. È possibile modificare questi nomi se desiderato.

  5. La procedura guidata crea un CCommand-base dei consumatori per impostazione predefinita. Se si preferisce un CTable-base di elettronica di consumo, selezionare il pulsante tabella.

  6. Scegliere Modifica, inserireed eliminare per supportare la modifica, inserimento e l'eliminazione dei record del set di righe, se richiesto.

  7. Fare clic su OK.

I generatori guidata di una classe di accesso e una classe di comando (o tabella), come illustrato nell'esempio di output di sotto. La classe di comando contiene codice per aprire l'origine e il set di righe specificato nella procedura guidata. La classe di accesso contiene una mappa di colonna per la tabella di database selezionato.

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

Torna a utilizzando i modelli Consumer DB OLE

Index