CUtlProps-Klasse
Implementiert Eigenschaften für eine Vielzahl von OLE DB-Eigenschaftsschnittstellen (z IDBProperties
. B. , , IDBProperties
und IRowsetInfo
).
Syntax
template < class T >
class ATL_NO_VTABLE CUtlProps : public CUtlPropsBase
Parameter
T
Die Klasse, die die BEGIN_PROPSET_MAP
.
Anforderungen
Header: „atldb.h“
Member
Methoden
Name | Beschreibung |
---|---|
GetPropValue | Ruft eine Eigenschaft aus einem Eigenschaftensatz ab. |
IsValidValue | Wird verwendet, um einen Wert vor dem Festlegen einer Eigenschaft zu überprüfen. |
OnInterfaceRequested | Behandelt Anforderungen für eine optionale Schnittstelle, wenn ein Consumer eine Methode für eine Objekterstellungsschnittstelle aufruft. |
OnPropertyChanged | Wird aufgerufen, nachdem eine Eigenschaft für verkettete Eigenschaften festgelegt wurde. |
SetPropValue | Legt eine Eigenschaft in einem Eigenschaftensatz fest. |
Hinweise
Die meisten dieser Klasse sind Implementierungsdetails.
CUtlProps
enthält zwei Member zum internen Festlegen von Eigenschaften: GetPropValue und SetPropValue.
Weitere Informationen zu den Makros, die in einer Eigenschaftensatzzuordnung verwendet werden, finden Sie unter BEGIN_PROPSET_MAP und END_PROPSET_MAP.
CUtlProps::GetPropValue
Ruft eine Eigenschaft aus einem Eigenschaftensatz ab.
Syntax
OUT_OF_LINE HRESULT GetPropValue(const GUID* pguidPropSet,
DBPROPID dwPropId,
VARIANT* pvValue);
Parameter
pguidPropSet
[in] Die GUID für das PropSet.
dwPropId
[in] Der Eigenschaftenindex.
pvValue
[out] Ein Zeiger auf eine Variante, die den neuen Eigenschaftswert enthält.
Rückgabewert
Failure
bei Fehlern und S_OK bei erfolgreicher Ausführung.
CUtlProps::IsValidValue
Wird verwendet, um einen Wert vor dem Festlegen einer Eigenschaft zu überprüfen.
Syntax
virtual HRESULT CUtlPropsBase::IsValidValue(ULONG /* iCurSet */,
DBPROP* pDBProp);
Parameter
iCurSet
Der Index im Eigenschaftensatzarray; Null, wenn nur eine Eigenschaft festgelegt ist.
pDBProp
Die Eigenschafts-ID und der neue Wert in einer DBPROP-Struktur .
Rückgabewert
Ein Standard-HRESULT. Der Standardwert ist S_OK.
Hinweise
Wenn Sie über Überprüfungsroutinen verfügen, die Sie für einen Wert ausführen möchten, den Sie zum Festlegen einer Eigenschaft verwenden möchten, sollten Sie diese Funktion überschreiben. Sie können z. B. DBPROP_AUTH_PASSWORD anhand einer Kennworttabelle überprüfen, um einen gültigen Wert zu ermitteln.
CUtlProps::OnInterfaceRequested
Verarbeitet Anforderungen für eine optionale Schnittstelle, wenn ein Consumer eine Methode für eine der Objekterstellungsschnittstellen aufruft.
Syntax
virtual HRESULT CUtlPropsBase::OnInterfaceRequested(REFIID riid);
Parameter
riid
[in] Die IID für die angeforderte Schnittstelle. Weitere Informationen finden Sie in der Beschreibung des Riid-Parameters ICommand::Execute
in der OLE DB-Programmierreferenz (im MDAC SDK).
Hinweise
OnInterfaceRequested
verarbeitet Verbraucheranforderungen für eine optionale Schnittstelle, wenn ein Verbraucher eine Methode für eine der Objekterstellungsschnittstellen aufruft (z IDBCreateSession
. B. , , IDBCreateCommand
, IOpenRowset
oder ICommand
). Sie legt die entsprechende OLE DB-Eigenschaft für die angeforderte Schnittstelle fest. Wenn beispielsweise der Consumer die Schnittstelle anfordert IID_IRowsetLocate
, OnInterfaceRequested
wird die DBPROP_IRowsetLocate
Schnittstelle festgelegt. Dadurch wird der richtige Zustand während der Zeilensatzerstellung beibehalten.
Diese Methode wird aufgerufen, wenn der Consumer aufruft IOpenRowset::OpenRowset
oder ICommand::Execute
.
Wenn ein Consumer ein Objekt öffnet und eine optionale Schnittstelle anfordert, sollte der Anbieter die dieser Schnittstelle zugeordnete Eigenschaft auf VARIANT_TRUE festlegen. Um die eigenschaftsspezifische Verarbeitung zuzulassen, wird aufgerufen, OnInterfaceRequested
bevor die Methode des Anbieters Execute
aufgerufen wird. Behandelt standardmäßig OnInterfaceRequested
die folgenden Schnittstellen:
IRowsetLocate
IRowsetChange
IRowsetUpdate
IConnectionPointContainer
IRowsetScroll
Wenn Sie andere Schnittstellen behandeln möchten, überschreiben Sie diese Funktion in Der Datenquelle, Sitzung, Befehl oder Rowsetklasse, um Funktionen zu verarbeiten. Ihre Außerkraftsetzung sollte die normalen Eigenschaftenschnittstellen für Set/Get durchlaufen, um sicherzustellen, dass durch festlegen von Eigenschaften auch verkettete Eigenschaften festgelegt werden (siehe OnPropertyChanged).
CUtlProps::OnPropertyChanged
Wird aufgerufen, nachdem eine Eigenschaft für verkettete Eigenschaften festgelegt wurde.
Syntax
virtual HRESULT OnPropertyChanged(ULONG /* iCurSet */,
DBPROP* pDBProp);
Parameter
iCurSet
Der Index im Eigenschaftensatzarray; Null, wenn nur eine Eigenschaft festgelegt ist.
pDBProp
Die Eigenschafts-ID und der neue Wert in einer DBPROP-Struktur .
Rückgabewert
Ein Standard-HRESULT. Der Standardwert ist S_OK.
Hinweise
Wenn Sie verkettete Eigenschaften behandeln möchten, z. B. Lesezeichen oder Aktualisierungen, deren Werte vom Wert einer anderen Eigenschaft abhängig sind, sollten Sie diese Funktion überschreiben.
Beispiel
In dieser Funktion ruft der Benutzer die Eigenschafts-ID aus dem DBPROP*
Parameter ab. Jetzt ist es möglich, die ID mit einer Eigenschaft mit einer Kette zu vergleichen. Wenn die Eigenschaft gefunden wird, wird mit der Eigenschaft aufgerufen, SetProperties
die jetzt in Verbindung mit der anderen Eigenschaft festgelegt wird. In diesem Fall kann eine Eigenschaft festgelegt werden, wenn eine die DBPROP_IRowsetLocate
DBPROP_BOOKMARKS
Eigenschaft oder DBPROP_LITERALBOOKMARKS
DBPROP_ORDEREDBOOKMARKS
eigenschaft abruft.
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
Legt eine Eigenschaft in einem Eigenschaftensatz fest.
Syntax
HRESULT SetPropValue(const GUID* pguidPropSet,
DBPROPID dwPropId,
VARIANT* pvValue);
Parameter
pguidPropSet
[in] Die GUID für das PropSet.
dwPropId
[in] Der Eigenschaftenindex.
pvValue
[in] Ein Zeiger auf eine Variante, die den neuen Eigenschaftswert enthält.
Rückgabewert
Failure
bei Fehlern und S_OK bei erfolgreicher Ausführung.
Siehe auch
OLE DB-Anbietervorlagen
Architektur von OLE DB-Anbietervorlagen