OLE DB 적합성 테스트 통과
공급자의 일관성을 높일 수 있도록 Data Access SDK는 OLE DB 규칙 테스트 집합을 제공합니다. 테스트는 공급자의 모든 측면을 확인하고 공급자가 예상대로 작동한다는 합리적인 보증을 제공합니다. Microsoft Data Access SDK에서 OLE DB 규칙 테스트를 찾을 수 있습니다. 이 섹션에서는 규칙 테스트를 통과하기 위해 수행해야 하는 작업을 중시합니다. OLE DB 규칙 테스트 실행에 대한 자세한 내용은 SDK를 참조하세요.
규칙 테스트 실행
Visual C++ 6.0에서 OLE DB 공급자 템플릿은 값과 속성을 확인할 수 있도록 여러 후킹 함수를 추가했습니다. 이러한 함수의 대부분은 규칙 테스트에 대한 응답으로 추가되었습니다.
참고 항목
공급자가 OLE DB 규칙 테스트를 통과하려면 여러 유효성 검사 함수를 추가해야 합니다.
이 공급자에는 두 가지 유효성 검사 루틴이 필요합니다. 첫 번째 루틴 CRowsetImpl::ValidateCommandID
은 행 집합 클래스의 일부입니다. 공급자 템플릿에서 행 집합을 만드는 동안 호출됩니다. 이 샘플은 이 루틴을 사용하여 인덱스를 지원하지 않는다고 소비자에게 알릴 수 있습니다. 첫 번째 호출은 CRowsetImpl::ValidateCommandID
공급자가 책갈피에 대한 CCustomRowset
공급자 지원의 인터페이스 맵에 추가된 typedef를 사용 _RowsetBaseClass
하므로 긴 템플릿 인수 줄을 입력할 필요가 없습니다. 다음으로, 인덱스 매개 변수가 NULL이 아니면 DB_E_NOINDEX 반환합니다(이는 소비자가 인덱스를 사용하려고 했음을 나타낸다). 명령 ID에 대한 자세한 내용은 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;
}
공급자 템플릿은 다른 사용자가 DBPROPSET_ROWSET 그룹의 속성을 변경할 때마다 메서드를 호출 OnPropertyChanged
합니다. 다른 그룹에 대한 속성을 처리하려면 해당 개체(즉, 클래스에서 DBPROPSET_SESSION 검사가 수행됨)에 CCustomSession
추가합니다.
코드는 먼저 속성이 다른 속성에 연결되어 있는지 확인합니다. 속성이 연결된 경우 DBPROP_BOOKMARKS 속성을 .로 True
설정합니다. OLE DB 사양의 부록 C에는 속성에 대한 정보가 포함되어 있습니다. 또한 이 정보는 속성이 다른 속성에 연결되어 있는지 여부를 알려줍니다.
코드에 루틴을 IsValidValue
추가할 수도 있습니다. 템플릿은 속성을 설정하려고 할 때 호출 IsValidValue
됩니다. 속성 값을 설정할 때 추가 처리가 필요한 경우 이 메서드를 재정의합니다. 각 속성 집합에 대해 이러한 메서드 중 하나를 사용할 수 있습니다.