CUtlProps — Klasa
Implementuje właściwości dla różnych interfejsów właściwości OLE DB (na przykład IDBProperties
, , IDBProperties
i IRowsetInfo
).
Składnia
template < class T >
class ATL_NO_VTABLE CUtlProps : public CUtlPropsBase
Parametry
T
Klasa zawierająca element BEGIN_PROPSET_MAP
.
Wymagania
Nagłówek: atldb.h
Elementy członkowskie
Metody
Nazwa/nazwisko | opis |
---|---|
GetPropValue | Pobiera właściwość z zestawu właściwości. |
IsValidValue | Służy do sprawdzania poprawności wartości przed ustawieniem właściwości. |
OnInterfaceRequested | Obsługuje żądania opcjonalnego interfejsu, gdy użytkownik wywołuje metodę w interfejsie tworzenia obiektu. |
OnPropertyChanged | Wywoływana po ustawieniu właściwości do obsługi właściwości łańcuchowych. |
SetPropValue | Ustawia właściwość w zestawie właściwości. |
Uwagi
Większość tej klasy jest szczegółem implementacji.
CUtlProps
Zawiera dwa elementy członkowskie ustawiania właściwości wewnętrznie: GetPropValue i SetPropValue.
Aby uzyskać więcej informacji na temat makr używanych w mapie zestawu właściwości, zobacz BEGIN_PROPSET_MAP i END_PROPSET_MAP.
CUtlProps::GetPropValue
Pobiera właściwość z zestawu właściwości.
Składnia
OUT_OF_LINE HRESULT GetPropValue(const GUID* pguidPropSet,
DBPROPID dwPropId,
VARIANT* pvValue);
Parametry
pguidPropSet
[in] Identyfikator GUID zestawu propset.
dwPropId
[in] Indeks właściwości.
pvValue
[out] Wskaźnik do wariantu zawierającego nową wartość właściwości.
Wartość zwracana
Failure
w przypadku awarii i S_OK, jeśli się powiedzie.
CUtlProps::IsValidValue
Służy do sprawdzania poprawności wartości przed ustawieniem właściwości.
Składnia
virtual HRESULT CUtlPropsBase::IsValidValue(ULONG /* iCurSet */,
DBPROP* pDBProp);
Parametry
iCurSet
Indeks do tablicy zestawu właściwości; zero, jeśli istnieje tylko jeden zestaw właściwości.
pDBProp
Identyfikator właściwości i nowa wartość w strukturze DBPROP .
Wartość zwracana
Standardowy HRESULT. Domyślna wartość zwracana jest S_OK.
Uwagi
Jeśli masz jakiekolwiek procedury weryfikacji, które chcesz uruchomić na wartości, której zamierzasz użyć do ustawienia właściwości, należy zastąpić tę funkcję. Można na przykład zweryfikować DBPROP_AUTH_PASSWORD względem tabeli haseł, aby określić prawidłową wartość.
CUtlProps::OnInterfaceRequested
Obsługuje żądania opcjonalnego interfejsu, gdy użytkownik wywołuje metodę w jednym z interfejsów tworzenia obiektu.
Składnia
virtual HRESULT CUtlPropsBase::OnInterfaceRequested(REFIID riid);
Parametry
riid
[in] Identyfikator IID żądanego interfejsu. Aby uzyskać więcej informacji, zobacz opis parametru ICommand::Execute
riid w dokumentacji programisty OLE DB (w zestawie SDK MDAC).
Uwagi
OnInterfaceRequested
obsługuje żądania konsumentów dla opcjonalnego interfejsu, gdy użytkownik wywołuje metodę w jednym z interfejsów tworzenia obiektu (takich jak IDBCreateSession
, IDBCreateCommand
, IOpenRowset
lub ICommand
). Ustawia odpowiednią właściwość OLE DB dla żądanego interfejsu. Jeśli na przykład użytkownik żąda IID_IRowsetLocate
, OnInterfaceRequested
ustawia DBPROP_IRowsetLocate
interfejs. W ten sposób zachowuje prawidłowy stan podczas tworzenia zestawu wierszy.
Ta metoda jest wywoływana, gdy użytkownik wywołuje IOpenRowset::OpenRowset
metodę lub ICommand::Execute
.
Jeśli użytkownik otworzy obiekt i zażąda opcjonalnego interfejsu, dostawca powinien ustawić właściwość skojarzona z tym interfejsem na VARIANT_TRUE. Aby zezwolić na przetwarzanie specyficzne dla właściwości, OnInterfaceRequested
jest wywoływana przed wywołaniem metody dostawcy Execute
. Domyślnie OnInterfaceRequested
obsługuje następujące interfejsy:
IRowsetLocate
IRowsetChange
IRowsetUpdate
IConnectionPointContainer
IRowsetScroll
Jeśli chcesz obsługiwać inne interfejsy, przesłoń tę funkcję w źródle danych, sesji, poleceniu lub zestawie wierszy do przetwarzania funkcji. Przesłonięcia powinny przechodzić przez interfejsy normalnych właściwości set/get, aby upewnić się, że ustawienie właściwości ustawia również wszystkie właściwości łańcuchowe (zobacz OnPropertyChanged).
CUtlProps::OnPropertyChanged
Wywoływana po ustawieniu właściwości do obsługi właściwości łańcuchowych.
Składnia
virtual HRESULT OnPropertyChanged(ULONG /* iCurSet */,
DBPROP* pDBProp);
Parametry
iCurSet
Indeks do tablicy zestawu właściwości; zero, jeśli istnieje tylko jeden zestaw właściwości.
pDBProp
Identyfikator właściwości i nowa wartość w strukturze DBPROP .
Wartość zwracana
Standardowy HRESULT. Domyślna wartość zwracana jest S_OK.
Uwagi
Jeśli chcesz obsługiwać właściwości łańcuchowe, takie jak zakładki lub aktualizacje, których wartości są zależne od wartości innej właściwości, należy zastąpić tę funkcję.
Przykład
W tej funkcji użytkownik pobiera identyfikator właściwości z parametru DBPROP*
. Teraz można porównać identyfikator z właściwością do łańcucha. Po znalezieniu właściwości jest wywoływana z właściwością , SetProperties
która zostanie teraz ustawiona w połączeniu z inną właściwością. W takim przypadku, jeśli zostanie uzyskana DBPROP_IRowsetLocate
właściwość , DBPROP_LITERALBOOKMARKS
lub DBPROP_ORDEREDBOOKMARKS
, można ustawić DBPROP_BOOKMARKS
właściwość .
HRESULT OnPropertyChanged(ULONG /*iCurSet*/, DBPROP* pDBProp)
{
ATLASSERT(pDBProp != NULL);
DWORD dwPropertyID = pDBProp->dwPropertyID;
if (dwPropertyID == DBPROP_IRowsetLocate ||
dwPropertyID == DBPROP_LITERALBOOKMARKS ||
dwPropertyID == DBPROP_ORDEREDBOOKMARKS)
{
CComVariant var = pDBProp->vValue;
if (var.boolVal == VARIANT_TRUE)
{
// Set the bookmarks property as these are chained
CComVariant bookVar(true);
CDBPropSet set(DBPROPSET_ROWSET);
set.AddProperty(DBPROP_BOOKMARKS, bookVar);
return SetProperties(1, &set);
}
}
return S_OK;
}
CUtlProps::SetPropValue
Ustawia właściwość w zestawie właściwości.
Składnia
HRESULT SetPropValue(const GUID* pguidPropSet,
DBPROPID dwPropId,
VARIANT* pvValue);
Parametry
pguidPropSet
[in] Identyfikator GUID zestawu propset.
dwPropId
[in] Indeks właściwości.
pvValue
[in] Wskaźnik do wariantu zawierającego nową wartość właściwości.
Wartość zwracana
Failure
w przypadku awarii i S_OK, jeśli się powiedzie.
Zobacz też
Szablony dostawców OLE DB
Architektura szablonu dostawcy OLE DB