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 DBIDoggetti 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 DBIDcontengono 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 CRowsetImplin 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 - CRowsetImplper 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 - CRowsetImplper 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 CRowsetImplmetodi 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 DBIDoggetti 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 CRowsetImplclasse 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 CRowsetImplclasse 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 CRowsetImplclasse derivata da , il metodo verrà chiamato invece dell'implementazione di base.

CRowsetImpl::ValidateCommandID

Verifica se o entrambi DBIDcontengono 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 DBIDcontengono valori stringa e, in tal caso, li copia nei relativi membri dati. Inserendo un metodo con questa firma nella CRowsetImplclasse 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;