Classe CUtlProps
Implementa le proprietà per un'ampia gamma di interfacce delle proprietà OLE DB , ad esempio , IDBProperties
IDBProperties
e IRowsetInfo
.
Sintassi
template < class T >
class ATL_NO_VTABLE CUtlProps : public CUtlPropsBase
Parametri
T
Classe che contiene l'oggetto BEGIN_PROPSET_MAP
.
Requisiti
Intestazione: atldb.h
Membri
Metodi
Nome | Descrizione |
---|---|
GetPropValue | Ottiene una proprietà da un set di proprietà. |
IsValidValue | Utilizzato per convalidare un valore prima di impostare una proprietà. |
OnInterfaceRequested | Gestisce le richieste per un'interfaccia facoltativa quando un consumer chiama un metodo su un'interfaccia di creazione di oggetti. |
OnPropertyChanged | Chiamato dopo aver impostato una proprietà per gestire le proprietà concatenati. |
SetPropValue | Imposta una proprietà in un set di proprietà. |
Osservazioni:
La maggior parte di questa classe è un dettaglio di implementazione.
CUtlProps
contiene due membri per impostare internamente le proprietà: GetPropValue e SetPropValue.
Per altre informazioni sulle macro utilizzate in una mappa del set di proprietà, vedere BEGIN_PROPSET_MAP e END_PROPSET_MAP.
CUtlProps::GetPropValue
Ottiene una proprietà da un set di proprietà.
Sintassi
OUT_OF_LINE HRESULT GetPropValue(const GUID* pguidPropSet,
DBPROPID dwPropId,
VARIANT* pvValue);
Parametri
pguidPropSet
[in] GUID per l'oggetto PropSet.
dwPropId
[in] Indice della proprietà.
pvValue
[out] Puntatore a una variante che contiene il nuovo valore della proprietà.
Valore restituito
Failure
in caso di errore e S_OK in caso di esito positivo.
CUtlProps::IsValidValue
Utilizzato per convalidare un valore prima di impostare una proprietà.
Sintassi
virtual HRESULT CUtlPropsBase::IsValidValue(ULONG /* iCurSet */,
DBPROP* pDBProp);
Parametri
iCurSet
Indice nella matrice di set di proprietà; zero se è presente un solo set di proprietà.
pDBProp
ID proprietà e nuovo valore in una struttura DBPROP .
Valore restituito
HRESULT standard. Il valore restituito predefinito è S_OK.
Osservazioni:
Se sono presenti routine di convalida da eseguire su un valore che si sta per utilizzare per impostare una proprietà, è necessario eseguire l'override di questa funzione. Ad esempio, è possibile convalidare DBPROP_AUTH_PASSWORD rispetto a una tabella delle password per determinare un valore valido.
CUtlProps::OnInterfaceRequested
Gestisce le richieste per un'interfaccia facoltativa quando un consumer chiama un metodo su una delle interfacce di creazione dell'oggetto.
Sintassi
virtual HRESULT CUtlPropsBase::OnInterfaceRequested(REFIID riid);
Parametri
riid
[in] IID per l'interfaccia richiesta. Per altri dettagli, vedere la descrizione del parametro riid di ICommand::Execute
in OLE DB Programmer's Reference (in MDAC SDK).
Osservazioni:
OnInterfaceRequested
gestisce le richieste di consumer per un'interfaccia facoltativa quando un consumer chiama un metodo su una delle interfacce di creazione dell'oggetto ( ad esempio IDBCreateSession
, IDBCreateCommand
IOpenRowset
, o ICommand
). Imposta la proprietà OLE DB corrispondente per l'interfaccia richiesta. Ad esempio, se il consumer richiede IID_IRowsetLocate
, OnInterfaceRequested
imposta l'interfaccia DBPROP_IRowsetLocate
. In questo modo viene mantenuto lo stato corretto durante la creazione del set di righe.
Questo metodo viene chiamato quando il consumer chiama IOpenRowset::OpenRowset
o ICommand::Execute
.
Se un consumer apre un oggetto e richiede un'interfaccia facoltativa, il provider deve impostare la proprietà associata a tale interfaccia su VARIANT_TRUE. Per consentire l'elaborazione specifica della proprietà, OnInterfaceRequested
viene chiamata prima che venga chiamato il metodo del Execute
provider. Per impostazione predefinita, OnInterfaceRequested
gestisce le interfacce seguenti:
IRowsetLocate
IRowsetChange
IRowsetUpdate
IConnectionPointContainer
IRowsetScroll
Se si desidera gestire altre interfacce, eseguire l'override di questa funzione nell'origine dati, nella sessione, nel comando o nella classe del set di righe per elaborare le funzioni. L'override deve passare attraverso le normali interfacce delle proprietà set/get per assicurarsi che l'impostazione delle proprietà imposti anche eventuali proprietà concatenati (vedere OnPropertyChanged).
CUtlProps::OnPropertyChanged
Chiamato dopo aver impostato una proprietà per gestire le proprietà concatenati.
Sintassi
virtual HRESULT OnPropertyChanged(ULONG /* iCurSet */,
DBPROP* pDBProp);
Parametri
iCurSet
Indice nella matrice di set di proprietà; zero se è presente un solo set di proprietà.
pDBProp
ID proprietà e nuovo valore in una struttura DBPROP .
Valore restituito
HRESULT standard. Il valore restituito predefinito è S_OK.
Osservazioni:
Se si desidera gestire le proprietà concatenati, ad esempio segnalibri o aggiornamenti i cui valori dipendono dal valore di un'altra proprietà, è necessario eseguire l'override di questa funzione.
Esempio
In questa funzione, l'utente ottiene l'ID proprietà dal DBPROP*
parametro . È ora possibile confrontare l'ID con una proprietà a catena. Quando la proprietà viene trovata, SetProperties
viene chiamata con la proprietà che verrà ora impostata insieme all'altra proprietà. In questo caso, se si ottiene la DBPROP_IRowsetLocate
proprietà , DBPROP_LITERALBOOKMARKS
o DBPROP_ORDEREDBOOKMARKS
, è possibile impostare la DBPROP_BOOKMARKS
proprietà .
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
Imposta una proprietà in un set di proprietà.
Sintassi
HRESULT SetPropValue(const GUID* pguidPropSet,
DBPROPID dwPropId,
VARIANT* pvValue);
Parametri
pguidPropSet
[in] GUID per l'oggetto PropSet.
dwPropId
[in] Indice della proprietà.
pvValue
[in] Puntatore a una variante che contiene il nuovo valore della proprietà.
Valore restituito
Failure
in caso di errore e S_OK in caso di esito positivo.
Vedi anche
Modelli di provider OLE DB
Architettura dei modelli di provider OLE DB