Sdílet prostřednictvím


Předávání testů shodnosti technologie OLE DB

Aby zprostředkovatelé byly konzistentnější, poskytuje sada testů shody OLE DB. Testy kontrolují všechny aspekty vašeho poskytovatele a poskytují přiměřenou jistotu, že váš poskytovatel funguje podle očekávání. Testy shody OLE DB najdete v sadě Microsoft Data Access SDK. Tato část se zaměřuje na věci, které byste měli udělat, abyste prošli testy shody. Informace o spuštění testů shody OLE DB naleznete v sadě SDK.

Spuštění testů shody

V sadě Visual C++ 6.0 přidaly šablony zprostředkovatele OLE DB řadu funkcí připojení, které umožňují kontrolovat hodnoty a vlastnosti. Většina těchto funkcí byla přidána v reakci na testy shody.

Poznámka:

Abyste mohli úspěšně projít testy shody OLE DB, musíte pro svého zprostředkovatele přidat několik ověřovacích funkcí.

Tento zprostředkovatel vyžaduje dvě rutiny ověřování. První rutina , CRowsetImpl::ValidateCommandIDje součástí třídy sady řádků. Volá se během vytváření sady řádků šablonami zprostředkovatele. Ukázka používá tuto rutinu k tomu, aby uživatelům řekla, že nepodporuje indexy. Prvním voláním je CRowsetImpl::ValidateCommandID (všimněte si, že poskytovatel používá typedef přidaný _RowsetBaseClass v mapě rozhraní pro CCustomRowset podporu zprostředkovatele pro záložky, takže nemusíte zadávat tento dlouhý řádek argumentů šablony). V dalším kroku vraťte DB_E_NOINDEX, pokud parametr indexu nemá hodnotu NULL (to značí, že uživatel chce použít index pro nás). Další informace o ID příkazů naleznete ve specifikaci OLE DB a vyhledejte IOpenRowset::OpenRowset.

Ověřovací rutinou ValidateCommandID je následující kód:

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

Šablony zprostředkovatele volají metodu OnPropertyChanged pokaždé, když někdo změní vlastnost ve skupině DBPROPSET_ROWSET. Pokud chcete zpracovat vlastnosti pro jiné skupiny, přidejte je do příslušného objektu (to znamená DBPROPSET_SESSION kontroly ve CCustomSession třídě).

Kód nejprve zkontroluje, zda je vlastnost propojena s jinou. Pokud je vlastnost zřetězený, nastaví vlastnost DBPROP_BOOKMARKS na Truehodnotu . Příloha C specifikace OLE DB obsahuje informace o vlastnostech. Tyto informace také říkají, jestli je vlastnost zřetězený k jiné.

Do kódu můžete také přidat rutinu IsValidValue . Šablony volají IsValidValue při pokusu o nastavení vlastnosti. Tuto metodu byste přepsali, pokud při nastavování hodnoty vlastnosti potřebujete další zpracování. Pro každou sadu vlastností můžete mít jednu z těchto metod.

Viz také

Pokročilé techniky zprostředkování