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::ValidateCommandID
je 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 True
hodnotu . 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.