Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Mise à jour : novembre 2007
L'exemple UpdatePV est un exemple des modèles de fournisseur OLE DB qui montre comment implémenter un fournisseur pouvant être mis à jour (accessible en lecture/écriture). Il illustre en particulier la manière d'effectuer des insertions/modifications/suppressions immédiates et différées. UpdatePV montre également comment utiliser des jeux de lignes du schéma (qui facilitent l'interaction avec un fournisseur pour certains Assistants). Comme MyProv, UpdatePV met en œuvre la classe IRowsetLocateImpl.
Consultez AdvancedPV, exemple pour une illustration d'autres techniques de chargement et d'enregistrement des données avec un fournisseur.
Note de sécurité : |
|---|
Cet exemple de code est fourni pour illustrer un concept et ne doit pas être utilisé dans des applications ou des sites Web, car il peut ne pas illustrer les pratiques de programmation les plus sûres. Microsoft n'assume aucune responsabilité pour tout dommage indirect ou consécutif en cas d'utilisation de l'exemple de code à des fins autres que celles prévues. |
Pour obtenir des exemples et des instructions d'installation :
Dans le menu ? (Aide) de Visual Studio, cliquez sur Exemples.
Pour plus d'informations, consultez Recherche des fichiers d'exemple.
La liste la plus récente et la plus complète d'exemples est disponible en ligne à partir de la page Visual Studio 2008 Samples.
Des exemples sont également disponibles sur le disque dur de votre ordinateur. Des exemples et un fichier Readme sont copiés par défaut dans un dossier sous \Program Files\Visual Studio 9.0\Samples\. Pour les éditions Express de Visual Studio, tous les exemples sont accessibles en ligne.
Génération et exécution de l'exemple
Pour illustrer les fonctionnalités particulières de cet exemple, générez le code, créez un projet consommateur avec un accesseur pour le fournisseur et créez une application console pour accéder aux données et les extraire.
Pour générer et exécuter cet exemple
Ouvrez le fichier solution UpdatePV.sln.
Dans le menu Générer, cliquez sur Générer la solution.
Créez un projet consommateur à l'aide de l'Assistant Projet ATL (faites-en un fichier .dll avec attributs).
Ajoutez un consommateur OLE DB au projet consommateur (dans Ajouter une classe, sélectionnez Consommateur OLE DB ATL).
Dans l'Assistant Consommateur OLE DB ATL, cliquez sur le bouton Source de données puis, dans Propriétés des liaisons de données, sélectionnez Fournisseur OLE DB UpProv. (Le fournisseur UpProv doit être inscrit automatiquement lorsque vous générez UpdatePV mais, s'il ne figure pas dans la liste, exécutez regsvr32.exe sur UpdatePV.dll.)
Cliquez sur Next pour passer à l'onglet Connexion puis, sous Entrez le catalogue initial à utiliser, vérifiez que le chemin d'accès à MyData.txt est correct.
Cliquez sur Ok. La boîte de dialogue Sélectionner l'objet de base de données apparaît, ouvrez alors Tables ; il y a un seul élément : le nom du chemin d'accès pour MyData.txt. Sélectionnez-le et cliquez sur OK. Vous retournez à l'Assistant Consommateur OLE DB ATL.
Dans l'Assistant Consommateur OLE DB ATL, sélectionnez Table, affectez à la classe un nom plus court (si nécessaire) tel que CMyCons, puis cliquez sur Terminer.
Ignorez le message d'avertissement de sécurité qui apparaît en appuyant sur OK.
Supprimez cette ligne de CMyCons.h :
#error Security Issue: The connection string may contain a passwordCette ligne empêchera la compilation, mais est insérée pour vous alerter au fait que (dans les scénarios réels) les informations sensibles doivent être protégées.
Générez le projet consommateur en cliquant avec le bouton droit sur le nœud du projet dans l'Explorateur de solutions et cliquant sur Générer.
Créez une nouvelle application console. Dans le fichier .cpp, incluez l'en-tête de consommateur et modifiez le code comme suit :
#include "stdafx.h" #include <atldbcli.h> #include "..\consumer\cmycons.h" int _tmain(int argc, _TCHAR* argv[]) { HRESULT hr = CoInitialize(NULL); CMyCons c; hr = c.OpenAll(); ATLASSERT( SUCCEEDED( hr ) ); hr = c.MoveFirst(); while( SUCCEEDED(hr) && hr != DB_S_ENDOFROWSET ) { printf( "%d %s %s %s %s\n", c.m_Fixed, c.m_Command, c.m_Text, c.m_Command2, c.m_Text2 ); hr = c.MoveNext(); } c.CloseAll(); CoUninitialize(); return 0; }Placez un point d'arrêt sur la fonction CoUninitialize ; ainsi, la console restera ouverte et vous pourrez voir les résultats. Exécutez l'application console à partir de l'environnement de développement en cliquant sur le bouton Démarrer. Cinq colonnes devraient s'imprimer (une colonne d'index et quatre colonnes de texte).
Fonctionnement de l'exemple
UpdatePV est généré par-dessus les fonctions E/S de fichier exécutable C. Il représente un magasin de données. Plus particulièrement, l'exemple prend un fichier texte constitué d'une paire de données et le transforme en jeu de lignes. Il est fourni avec un fichier texte (MyData.txt) qui contient des paires de données. Vous pouvez toutefois l'exécuter avec un fichier texte quelconque (dont le contenu sera simplement analysé et converti en tuples de deux mots).
UpdatePV effectue ses opérations de lecture à l'aide de RUpdateRowset::Execute (rowset.h). Les opérations d'écriture sont gérées à l'aide de RUpdateRowset::FlushData (rowset.h). Ces fonctions sont appelées par les modèles de fournisseur OLE DB dans le cadre du fonctionnement normal du fournisseur. L'exemple utilise les classes IRowsetChangeImpl et IRowsetUpdateImpl des modèles de fournisseur OLE DB. La classe IRowsetChangeImpl fournit la prise en charge des insertions/modifications/suppressions immédiates. La classe IRowsetUpdateImpl prend en charge les insertions/modifications/suppressions différées. La classe IRowsetUpdateImpl hérite de IRowsetChangeImpl. Pour plus d'informations sur l'obtention ou la définition de données, consultez Création d'un fournisseur actualisable dans la documentation Visual C++ et Mise à jour des données des jeux de lignes dans le Guide de référence du programmeur OLE DB dans la documentation du Kit de développement logiciel (SDK) Windows.
UpdatePV assure également la prise en charge des jeux de lignes du schéma. Ces jeux de lignes permettent aux consommateurs de trouver des informations relatives à un fournisseur sans ouvrir de jeu de lignes ni exécuter de commande. Les Assistants Visual C++ utilisent les jeux de lignes de schéma pour générer des accesseurs côté client. Les fonctions principales sont CUpdateSessionTRSchemaRowset::Execute, CUpdateSessionColSchemaRowset::Execute et CUpdateSessionPTSchemaRowset::Execute. Ces fonctions retournent toutes les trois des informations sur les tables prises en charge par le fournisseur, les colonnes et les types de données de ces tables. Pour plus d'informations sur les jeux de lignes du schéma, consultez l'interface IDBSchemaRowset dans le Guide de référence du programmeur OLE DB.
Mots clés
Cet exemple illustre l'utilisation des interfaces suivantes :
IRowsetChange, IRowsetUpdateImpl
Cet exemple illustre l'utilisation des propriétés suivantes :
DBPROP_IRowsetChange, DBPROP_IRowsetUpdate
Note de sécurité :