Criando um consumidor de OOLE DB

Você pode usar o AppWizard de COM ATL e ATL objeto Assistente para gerar um consumidor de OLE DB modelo.

Para criar um projeto ATL para um consumidor de OOLE DB

  1. No menu arquivo , escolha novo. Aparece a caixa de diálogo Nova.

  2. Na guia Projects , escolha o AppWizard de COM ATL.

    Nome do projeto na guia projetos e, em seguida, clique em OK. O AppWizard de COM ATL aparece.

  3. No AppWizard de COM ATL, escolha um tipo de projeto.

  4. Clique em Concluir e em OK.

Em seguida, use o Assistente de objeto ATL.

Para usar o Assistente de objeto ATL

  1. No menu Inserir , selecione Novo objeto ATL. Aparece o Assistente de objeto ATL.

  2. No painel esquerdo, escolha Acesso a dados. O ícone de consumidor aparece no painel direito.

  3. Selecione o ícone de consumidor e clique em Avançar. Aparece a caixa de diálogo de Propriedades do ATL objeto Assistente .

Use o Assistente de objeto ATL para definir propriedades para o consumidor.

Para definir propriedades de consumidor usando o Assistente de objeto ATL

  1. Na caixa de diálogo de Propriedades do ATL objeto Assistente , clique no botão Selecionar fonte de dados . Aparece a caixa de diálogo Criar nova ligação de dados .

  2. Na caixa de diálogo Criar nova ligação de dados , selecione um provedor de OLE DB e opções apropriadas, incluindo:
    • Localização e dados da fonte para os dados a ser usado pelo provedor de.

    • ID de logon e a senha para a sua fonte de dados.

    Depois de selecionar o provedor e outras configurações, clique em Testar conexão para verificar as seleções feitas nas páginas de caixa de diálogo anterior. Se a caixa de Results reportar PASSED , clique em Concluir para criar a ligação de dados. Aparece a caixa de diálogo Selecionar tabela de banco de dados.

  3. Na caixa de diálogo Selecionar tabela de banco de dados , use o controle de árvore para selecionar uma tabela, consulta ou procedimento armazenado e clique em OK. Retornar para a caixa de diálogo de Propriedades do ATL objeto Assistente.

  4. A caixa de diálogo preenche os nomes para o Nome abreviado, classe, acessadore .Arquivo h. Os quatro últimos são baseados no nome abreviado. Você pode editar esses nomes se desejado.

  5. O assistente cria um CCommand-com base consumidor por padrão. Se você preferir um CTable-com base consumidor, selecione o botão de tabela.

  6. Escolha Alterar, Inserire Excluir para dar suporte a alterar, inserir e excluir registros no conjunto de linhas, se necessário.

  7. Clique em OK.

Os geradores de Assistente para uma classe do acessador e uma classe de comando (ou tabela), conforme mostrado no exemplo de saída abaixo. A classe de comando contém código para abrir a fonte de dados e conjunto de linhas que você especificou no assistente. A classe de acessador contém um mapa de coluna para a tabela de banco de dados selecionado.

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

Voltar para usando os OLE DB consumidor modelos

Index