Freigeben über


Erfolgreiche Durchführung der OLE DB-Konformitätstests

Um Anbieter konsistenter zu machen, stellt das Data Access SDK eine Reihe von OLE DB-Konformitätstests bereit. Die Tests überprüfen alle Aspekte Ihres Anbieters und geben Ihnen angemessene Sicherheit, dass Ihr Anbieter wie erwartet funktioniert. Die OLE DB-Konformitätstests finden Sie im Microsoft Data Access SDK. Dieser Abschnitt konzentriert sich auf dinge, die Sie tun sollten, um die Konformitätstests zu bestehen. Informationen zum Ausführen der OLE DB-Konformitätstests finden Sie im SDK.

Ausführen der Konformitätstests

In Visual C++ 6.0 haben die OLE DB-Anbietervorlagen eine Reihe von Hookingfunktionen hinzugefügt, mit denen Sie Werte und Eigenschaften überprüfen können. Die meisten dieser Funktionen wurden als Reaktion auf die Konformitätstests hinzugefügt.

Hinweis

Sie müssen mehrere Überprüfungsfunktionen für Ihren Anbieter hinzufügen, um die OLE DB-Konformitätstests zu bestehen.

Dieser Anbieter erfordert zwei Überprüfungsroutinen. Die erste Routine ist CRowsetImpl::ValidateCommandIDTeil der Rowset-Klasse. Es wird während der Erstellung des Rowsets durch die Anbietervorlagen aufgerufen. Im Beispiel wird diese Routine verwendet, um Den Verbrauchern mitzuteilen, dass sie keine Indizes unterstützt. Der erste Aufruf besteht CRowsetImpl::ValidateCommandID darin (beachten Sie, dass der Anbieter die _RowsetBaseClass typdef verwendet, die in der Schnittstellenzuordnung für CCustomRowset die Anbieterunterstützung für Lesezeichen hinzugefügt wurde, sodass Sie diese lange Zeile von Vorlagenargumenten nicht eingeben müssen). Geben Sie als Nächstes DB_E_NOINDEX zurück, wenn der Indexparameter nicht NULL ist (dies gibt an, dass der Verbraucher einen Index für uns verwenden möchte). Weitere Informationen zu Befehls-IDs finden Sie in der OLE DB-Spezifikation, und suchen Sie nach IOpenRowset::OpenRowset.

Der folgende Code ist die ValidateCommandID Überprüfungsroutine:

/////////////////////////////////////////////////////////////////////
// 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;
}

Die Anbietervorlagen rufen die OnPropertyChanged Methode auf, wenn jemand eine Eigenschaft in der DBPROPSET_ROWSET Gruppe ändert. Wenn Sie Eigenschaften für andere Gruppen behandeln möchten, fügen Sie sie dem entsprechenden Objekt hinzu (d. h. DBPROPSET_SESSION Prüfungen werden in die CCustomSession Klasse verschoben).

Der Code überprüft zuerst, ob die Eigenschaft mit einer anderen verknüpft ist. Wenn die Eigenschaft verkettet wird, wird die DBPROP_BOOKMARKS Eigenschaft auf True. Anhang C der OLE DB-Spezifikation enthält Informationen zu Eigenschaften. Diese Informationen geben Ihnen auch an, ob die Eigenschaft mit einem anderen verkettet ist.

Möglicherweise möchten Sie ihrem Code auch die IsValidValue Routine hinzufügen. Die Vorlagen rufen IsValidValue beim Festlegen einer Eigenschaft auf. Sie würden diese Methode außer Kraft setzen, wenn Beim Festlegen eines Eigenschaftswerts zusätzliche Verarbeitung erforderlich ist. Sie können über eine dieser Methoden für jeden Eigenschaftensatz verfügen.

Siehe auch

Erweiterte Anbietertechniken