Partager via


Tests de compatibilité OLE DB

Pour rendre les fournisseurs plus cohérents, le Kit de développement logiciel (SDK) Data Access fournit un ensemble de tests de conformité OLE DB. Les tests vérifient tous les aspects de votre fournisseur et vous offrent une assurance raisonnable que votre fournisseur fonctionne comme prévu. Vous trouverez les tests de conformité OLE DB sur le Kit de développement logiciel (SDK) Microsoft Data Access. Cette section se concentre sur les actions que vous devez effectuer pour passer les tests de conformité. Pour plus d’informations sur l’exécution des tests de conformité OLE DB, consultez le Kit de développement logiciel (SDK).

Exécution des tests de conformité

Dans Visual C++ 6.0, les modèles de fournisseur OLE DB ont ajouté un certain nombre de fonctions de raccordement pour vous permettre de vérifier les valeurs et les propriétés. La plupart de ces fonctions ont été ajoutées en réponse aux tests de conformité.

Remarque

Vous devez ajouter plusieurs fonctions de validation pour que votre fournisseur réussisse les tests de conformité OLE DB.

Ce fournisseur nécessite deux routines de validation. La première routine, fait CRowsetImpl::ValidateCommandIDpartie de votre classe d’ensemble de lignes. Elle est appelée lors de la création de l’ensemble de lignes par les modèles de fournisseur. L’exemple utilise cette routine pour indiquer aux consommateurs qu’elle ne prend pas en charge les index. Le premier appel consiste à CRowsetImpl::ValidateCommandID (notez que le fournisseur utilise le _RowsetBaseClass typedef ajouté dans la carte d’interface pour CCustomRowset la prise en charge du fournisseur pour les signets, de sorte que vous n’avez pas à taper cette longue ligne d’arguments de modèle). Ensuite, retournez DB_E_NOINDEX si le paramètre d’index n’est pas NULL (cela indique que le consommateur souhaite utiliser un index sur nous). Pour plus d’informations sur les ID de commande, consultez la spécification OLE DB et recherchez IOpenRowset::OpenRowset.

Le code suivant est la routine de ValidateCommandID validation :

/////////////////////////////////////////////////////////////////////
// CustomRS.H
// Class: CCustomRowset

HRESULT ValidateCommandID(DBID* pTableID, DBID* pIndexID)
{
   HRESULT hr = _RowsetBaseClass::ValidateCommandID(pTableID, pIndexID);
   if (hr != S_OK)
      return hr;

   if (pIndexID != NULL)
      return DB_E_NOINDEX;    // Doesn't support indexes

   return S_OK;
}

Les modèles de fournisseur appellent la OnPropertyChanged méthode chaque fois qu’une personne modifie une propriété sur le groupe DBPROPSET_ROWSET. Si vous souhaitez gérer des propriétés pour d’autres groupes, vous les ajoutez à l’objet approprié (autrement dit, DBPROPSET_SESSION vérifications vont dans la CCustomSession classe).

Le code vérifie d’abord si la propriété est liée à une autre. Si la propriété est chaînée, elle définit la propriété DBPROP_BOOKMARKS sur True. L’annexe C de la spécification OLE DB contient des informations sur les propriétés. Ces informations vous indiquent également si la propriété est chaînée à une autre.

Vous pouvez également ajouter la IsValidValue routine à votre code. Les modèles appellent IsValidValue lors de la tentative de définition d’une propriété. Vous remplacez cette méthode si vous avez besoin d’un traitement supplémentaire lors de la définition d’une valeur de propriété. Vous pouvez avoir l’une de ces méthodes pour chaque jeu de propriétés.

Voir aussi

Techniques avancées du fournisseur