Поделиться через


Проверка на совместимость с OLE DB

Чтобы обеспечить согласованность поставщиков, пакет SDK для доступа к данным предоставляет набор тестов соответствия OLE DB. Тесты проверяют все аспекты поставщика и дают вам разумное подтверждение того, что ваш поставщик работает должным образом. Тесты соответствия OLE DB можно найти в пакете SDK microsoft Data Access. В этом разделе рассматриваются действия, которые необходимо выполнить для прохождения тестов соответствия. Сведения о выполнении тестов соответствия OLE DB см. в пакете SDK.

Выполнение тестов соответствия

В Visual C++ 6.0 шаблоны поставщиков OLE DB добавили ряд функций перехватчика, позволяющих проверять значения и свойства. Большинство этих функций были добавлены в ответ на тесты соответствия.

Примечание.

Необходимо добавить несколько функций проверки для поставщика, чтобы передать тесты соответствия OLE DB.

Для этого поставщика требуется две подпрограммы проверки. Первая подпрограмма , CRowsetImpl::ValidateCommandIDявляется частью класса набора строк. Он вызывается во время создания набора строк шаблонами поставщика. В примере используется эта подпрограмма, чтобы сообщить потребителям, что он не поддерживает индексы. Первый вызов заключается CRowsetImpl::ValidateCommandID в том, чтобы (обратите внимание, что поставщик использует _RowsetBaseClass типdef, добавленный в схему CCustomRowset интерфейса для поддержки поставщиков закладок, поэтому вам не нужно вводить длинную строку аргументов шаблона). Затем верните DB_E_NOINDEX, если параметр индекса не имеет значения NULL (это означает, что потребитель хочет использовать индекс для нас). Дополнительные сведения об идентификаторах команд см. в спецификации OLE DB и поиске IOpenRowset::OpenRowset.

Следующий код — это подпрограмма ValidateCommandID проверки:

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

Шаблоны поставщиков вызывают OnPropertyChanged метод всякий раз, когда кто-то изменяет свойство в группе DBPROPSET_ROWSET. Если вы хотите обрабатывать свойства для других групп, добавьте их в соответствующий объект (т. е. DBPROPSET_SESSION проверки переходят в CCustomSession класс).

Код сначала проверяет, связано ли свойство с другим. Если свойство цепочки, оно задает для Trueсвойства DBPROP_BOOKMARKS значение. Приложение C спецификации OLE DB содержит сведения о свойствах. Эта информация также указывает, подключено ли свойство к другому.

Также может потребоваться добавить подпрограмму IsValidValue в код. Вызов шаблонов IsValidValue при попытке задать свойство. Этот метод переопределится, если требуется дополнительная обработка при настройке значения свойства. Для каждого набора свойств можно использовать один из этих методов.

См. также

Дополнительные способы использования поставщика