Freigeben über


CUtlProps-Klasse

Implementiert Eigenschaften für eine Vielzahl von OLE DB-Eigenschaftsschnittstellen (z IDBProperties. B. , , IDBPropertiesund 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“

Mitglieder

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-ParametersICommand::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, IOpenRowsetoder 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 Standard den richtigen 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_IRowsetLocateDBPROP_BOOKMARKS Eigenschaft oder DBPROP_LITERALBOOKMARKSDBPROP_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