Création d'un consommateur sans utiliser l'Assistant
L’exemple suivant suppose que vous ajoutez la prise en charge du consommateur OLE DB à un projet ATL existant. Si vous souhaitez ajouter la prise en charge du consommateur OLE DB à une application MFC, vous devez exécuter l’Assistant Application MFC, qui crée toute la prise en charge nécessaire et appelle les routines MFC nécessaires pour exécuter l’application.
Pour ajouter la prise en charge du consommateur OLE DB sans utiliser l’Assistant Consommateur OLE DB ATL:
Dans votre fichier pch.h , ajoutez les instructions suivantes
#include
:#include <atlbase.h> #include <atldbcli.h> #include <atldbsch.h> // if you are using schema templates
Par programmation, un consommateur exécute généralement la séquence d’opérations suivante :
Créez une classe d’enregistrement utilisateur qui lie les colonnes aux variables locales. Dans cet exemple,
CMyTableNameAccessor
est la classe d’enregistrement utilisateur (consultez Enregistrements utilisateur). Cette classe contient le mappage de colonnes et le mappage de paramètre. Déclarez un membre de données dans la classe d’enregistrement utilisateur pour chaque champ que vous spécifiez dans votre mappage de colonne. Pour chacun de ces membres de données, déclarez également un membre de données d’état et un membre de données de longueur. Pour plus d’informations, consultez Membre de données d’état des champs dans les accesseurs générés par l’Assistant.Remarque
Si vous écrivez votre propre consommateur, les variables de données doivent précéder les variables d’état et de longueur.
Instanciez une source de données et une session. Décidez du type d’accesseur et d’ensemble de lignes à utiliser, puis instanciez un ensemble de lignes à l’aide de CCommand ou CTable :
CDataSource ds; CSession ss; class CMyTableName : public CCommand<CAccessor<CMyTableNameAccessor>>
Appelez
CoInitialize
pour initialiser COM. Il est appelé dans le code principal. Par exemple :HRESULT hr = CoInitialize(NULL);
Appelez CDataSource::Open ou une de ses variantes.
Ouvrez une connexion à la source de données, ouvrez la session puis ouvrez et initialisez l’ensemble de lignes (s’il s’agit d’une commande, exécutez-la aussi) :
hr = ds.Open(); hr = ss.Open(ds); hr = rs.Open(); // (Open also executes the command)
Si vous le souhaitez, définissez des propriétés l’aide de
CDBPropSet::AddProperty
et passez-les en tant que paramètre àrs.Open
. Pour obtenir un exemple de cette procédure, consultezGetRowsetProperties
dans Méthodes de consommateur générées par l’Assistant.Vous pouvez maintenant utiliser l’ensemble de lignes pour récupérer/manipuler les données.
Quand votre application est terminée, fermez la connexion, la session et l’ensemble de lignes :
rs.Close(); ss.Close(); ds.Close();
Si vous utilisez une commande, il est conseillé d’appeler
ReleaseCommand
aprèsClose
. L’exemple de code dans CCommand::Close montre comment appelerClose
etReleaseCommand
.Appelez
CoUnInitialize
pour annuler l’initialisation de COM. Il est appelé dans le code principal.CoUninitialize();