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::ValidateCommandID
partie 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.