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
Nome do projeto na guia projetos e, em seguida, clique em OK. O AppWizard de COM ATL aparece.
Em seguida, use o Assistente de objeto ATL.
Para usar o Assistente de objeto ATL
Use o Assistente de objeto ATL para definir propriedades para o consumidor.
Para definir propriedades de consumidor usando o Assistente de objeto ATL
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.
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_