Classe CRowsetImpl
Fornisce un'implementazione standard del set di righe OLE DB senza richiedere più ereditarietà di molte interfacce di implementazione.
Sintassi
template <
class T,
class Storage,
class CreatorClass,
class ArrayType = CAtlArray<Storage>,
class RowClass = CSimpleRow,
class RowsetInterface = IRowsetImpl <T, IRowset>
>
class CRowsetImpl :
public CComObjectRootEx<CreatorClass::_ThreadModel>,
public CRowsetBaseImpl<T, Storage, ArrayType, RowsetInterface>,
public IRowsetInfoImpl<T, CreatorClass::_PropClass>
Parametri
T
Classe dell'utente che deriva da CRowsetImpl
.
Storage
Classe di record utente.
CreatorClass
Classe che contiene proprietà per il set di righe; in genere il comando .
ArrayType
Classe che fungerà da risorsa di archiviazione per i dati del set di righe. Per impostazione predefinita, questo parametro è CAtlArray
, ma può essere qualsiasi classe che supporti la funzionalità richiesta.
Requisiti
Intestazione: atldb.h
Membri
Metodi
Nome | Descrizione |
---|---|
NameFromDBID | Estrae una stringa da un DBID oggetto e la copia nella stringa bstr passata. |
SetCommandText | Convalida e archivia gli DBID oggetti nelle due stringhe (m_strCommandText e m_strIndexText). |
Metodi sostituibili
Nome | Descrizione |
---|---|
GetColumnInfo | Recupera le informazioni sulle colonne per una determinata richiesta client. |
GetCommandFromID | Verifica se uno o entrambi i parametri contengono valori stringa e, in tal caso, copia i valori stringa nei membri dati m_strCommandText e m_strIndexText. |
ValidateCommandID | Verifica se o entrambi DBID contengono valori stringa e, in tal caso, li copia nei relativi membri dati m_strCommandText e m_strIndexText. |
Membri dei dati
Nome | Descrizione |
---|---|
m_rgRowData | Per impostazione predefinita, un oggetto CAtlArray che crea modelli nell'argomento del modello di record utente su CRowsetImpl . Un'altra classe di tipi di matrice può essere usata modificando l'argomento del ArrayType modello in CRowsetImpl . |
m_strCommandText | Contiene il comando iniziale del set di righe. |
m_strIndexText | Contiene l'indice iniziale del set di righe. |
Osservazioni:
CRowsetImpl
fornisce override sotto forma di upcast statici. I metodi controllano il modo in cui un determinato set di righe convaliderà il testo del comando. È possibile creare una classe personalizzata CRowsetImpl
in stile rendendo le interfacce di implementazione multiple ereditate. L'unico metodo per il quale è necessario fornire l'implementazione è Execute
. A seconda del tipo di set di righe che si sta creando, i metodi creator prevedono firme diverse per Execute
. Ad esempio, se si usa una classe derivata da - CRowsetImpl
per implementare un set di righe dello schema, il Execute
metodo avrà la firma seguente:
HRESULT Execute(LONG* pcRows, ULONG cRestrictions, const VARIANT* rgRestrictions)
Se si sta creando una classe derivata da - CRowsetImpl
per implementare un set di righe di un comando o di una sessione, il Execute
metodo avrà la firma seguente:
HRESULT Execute(LONG* pcRows, DBPARAMS* pParams)
Per implementare uno dei CRowsetImpl
metodi derivati da Execute
, è necessario popolare i buffer di dati interni (m_rgRowData).
CRowsetImpl::NameFromDBID
Estrae una stringa da un DBID
oggetto e la copia nella stringa bstr passata.
Sintassi
HRESULT CRowsetBaseImpl::NameFromDBID(DBID* pDBID,
CComBSTR& bstr,
bool bIndex);
Parametri
pDBID
[in] Puntatore all'oggetto DBID
da cui estrarre una stringa.
bstr
[in] Riferimento CComBSTR per inserire una copia della DBID
stringa.
bIndex
[in] true
se un indice DBID
; false
se una tabella DBID
.
Valore restituito
HRESULT standard. A seconda che sia DBID
una tabella o un indice (indicato da bIndex), il metodo restituirà DB_E_NOINDEX o DB_E_NOTABLE.
Osservazioni:
Questo metodo viene chiamato dalle CRowsetImpl
implementazioni di ValidateCommandID e GetCommandFromID.
CRowsetImpl::SetCommandText
Convalida e archivia gli DBID
oggetti nelle due stringhe (m_strCommandText e m_strIndexText).
Sintassi
HRESULT CRowsetBaseImpl::SetCommandText(DBID* pTableID,
DBID* pIndexID);
Parametri
pTableID
[in] Puntatore all'oggetto DBID
che rappresenta l'ID tabella.
pIndexID
[in] Puntatore all'oggetto DBID
che rappresenta l'ID di indice.
Valore restituito
HRESULT standard.
Osservazioni:
Il SetCommentText
metodo viene chiamato da CreateRowset
, un metodo statico templatizzato di IOpenRowsetImpl
.
Questo metodo delega il proprio lavoro chiamando ValidateCommandID e GetCommandFromID tramite un puntatore upcast.
CRowsetImpl::GetColumnInfo
Recupera le informazioni sulle colonne per una determinata richiesta client.
Sintassi
static ATLCOLUMNINFO* CRowsetBaseImpl::GetColumnInfo(T* pv,
ULONG* pcCols);
Parametri
Pv
[in] Puntatore alla classe derivata dell'utente CRowsetImpl
.
pcCols
[in] Puntatore (output) al numero di colonne restituite.
Valore restituito
Puntatore a una struttura statica ATLCOLUMNINFO
.
Osservazioni:
Questo metodo è un override avanzato.
Questo metodo viene chiamato da diverse classi di implementazione di base per recuperare le informazioni sulle colonne per una determinata richiesta client. In genere, questo metodo viene chiamato da IColumnsInfoImpl
. Se si esegue l'override di questo metodo, è necessario inserire una versione del metodo nella CRowsetImpl
classe derivata da . Poiché il metodo può essere inserito in una classe non templatizzata, è necessario passare alla classe derivata da pv appropriata CRowsetImpl
.
Nell'esempio seguente viene illustrato l'utilizzo GetColumnInfo
. In questo esempio è CMyRowset
una CRowsetImpl
classe derivata da . Per eseguire l'override GetColumnInfo
per tutte le istanze di questa classe, inserire il metodo seguente nella definizione della CMyRowset
classe:
static ATLCOLUMNINFO* GetColumnInfo(CCustomRowset* pRowset, DBORDINAL* pcCols)
{
// Add your implementation here and/or call the base class
return CRowsetImpl::GetColumnInfo(pRowset, pcCols);
}
CRowsetImpl::GetCommandFromID
Verifica se uno o entrambi i parametri contengono valori stringa e, in tal caso, copia i valori stringa nei membri dati m_strCommandText e m_strIndexText.
Sintassi
HRESULT CRowsetBaseImpl::GetCommandFromID(DBID* pTableID,
DBID* pIndexID);
Parametri
pTableID
[in] Puntatore all'oggetto DBID
che rappresenta l'ID tabella.
pIndexID
[in] Puntatore all'oggetto DBID
che rappresenta l'ID indice.
Valore restituito
HRESULT standard.
Osservazioni:
Questo metodo viene chiamato tramite un upcast statico per CRowsetImpl
popolare i membri dati m_strCommandText e m_strIndexText. Per impostazione predefinita, questo metodo verifica se uno o entrambi i parametri contengono valori stringa. Se contengono valori stringa, questo metodo copia i valori stringa nei membri dati. Inserendo un metodo con questa firma nella CRowsetImpl
classe derivata da , il metodo verrà chiamato invece dell'implementazione di base.
CRowsetImpl::ValidateCommandID
Verifica se o entrambi DBID
contengono valori stringa e, in tal caso, li copia nei relativi membri dati m_strCommandText e m_strIndexText.
Sintassi
HRESULT CRowsetBaseImpl::ValidateCommandID(DBID* pTableID,
DBID* pIndexID);
Parametri
pTableID
[in] Puntatore all'oggetto DBID
che rappresenta l'ID tabella.
pIndexID
[in] Puntatore all'oggetto DBID
che rappresenta l'ID di indice.
Valore restituito
HRESULT standard.
Osservazioni:
Questo metodo viene chiamato tramite un upcast statico per CRowsetImpl
popolare i relativi membri dati m_strCommandText e m_strIndexText. Per impostazione predefinita, questo metodo verifica se o entrambi DBID
contengono valori stringa e, in tal caso, li copia nei relativi membri dati. Inserendo un metodo con questa firma nella CRowsetImpl
classe derivata da , il metodo verrà chiamato invece dell'implementazione di base.
CRowsetImpl::m_rgRowData
Per impostazione predefinita, un oggetto CAtlArray
che crea modelli nell'argomento del modello di record utente su CRowsetImpl
.
Sintassi
ArrayType CRowsetBaseImpl::m_rgRowData;
Osservazioni:
ArrayType è un parametro di modello di CRowsetImpl
.
CRowsetImpl::m_strCommandText
Contiene il comando iniziale del set di righe.
Sintassi
CComBSTR CRowsetBaseImpl::m_strCommandText;
CRowsetImpl::m_strIndexText
Contiene l'indice iniziale del set di righe.
Sintassi
CComBSTR CRowsetBaseImpl::m_strIndexText;