Freigeben über


IRowsetImpl-Klasse

Stellt eine Implementierung der IRowset-Schnittstelle bereit.

Syntax

template <
   class T,
   class RowsetInterface,
   class RowClass = CSimpleRow,
   class MapClass = CAtlMap <
      RowClass::KeyType,
      RowClass*>>
class ATL_NO_VTABLE IRowsetImpl : public RowsetInterface

Parameter

T
Ihre Klasse, abgeleitet von IRowsetImpl.

RowsetInterface
Eine von IRowsetImpl.

RowClass
Speichereinheit für die HROW.

MapClass
Speichereinheit für alle Zeilenziehpunkte, die vom Anbieter gehalten werden.

Anforderungen

Header: „atldb.h“

Mitglieder

Methoden

Name Beschreibung
AddRefRows Fügt einem vorhandenen Zeilenziehpunkt eine Verweisanzahl hinzu.
CreateRow Wird von GetNextRows aufgerufen, um eine neue HROWzuzuweisen. Nicht direkt vom Benutzer aufgerufen.
GetData Ruft Daten aus der Kopie des Rowsets der Zeile ab.
GetDBStatus Gibt den Status für das angegebene Feld zurück.
Getnextrows Ruft Zeilen sequenziell ab und merkt sich die vorherige Position.
IRowsetImpl Der Konstruktor. Nicht direkt vom Benutzer aufgerufen.
RefRows Aufgerufen von AddRefRows und ReleaseRows. Nicht direkt vom Benutzer aufgerufen.
ReleaseRows Gibt Zeilen frei.
RestartPosition Positioniert die nächste Abrufposition an der Anfangsposition. d. h. die Position, an der das Rowset zum ersten Mal erstellt wurde.
SetDBStatus Legt die Statuskennzeichnungen für das angegebene Feld fest.

Datenelemente

Name Beschreibung
m_bCanFetchBack Gibt an, ob ein Anbieter das Rückwärtsabrufen unterstützt.
m_bCanScrollBack Gibt an, ob ein Anbieter den Cursor rückwärts scrollen kann.
m_bReset Gibt an, ob ein Anbieter seine Cursorposition zurückgesetzt hat. Dies hat eine besondere Bedeutung, wenn der Bildlauf rückwärts oder rückwärts in GetNextRows abgerufen wird.
m_iRowset Ein Index für das Rowset, der den Cursor darstellt.
m_rgRowHandles Eine Liste der Zeilenziehpunkte.

Hinweise

IRowset ist die Basiszeilenschnittstelle.

IRowsetImpl::AddRefRows

Fügt einem vorhandenen Zeilenziehpunkt eine Verweisanzahl hinzu.

Syntax

STDMETHOD(AddRefRows )(DBCOUNTITEM cRows,
   const HROW rghRows[],
   DBREFCOUNT rgRefCounts[],
   DBROWSTATUS rgRowStatus[]);

Parameter

Siehe "IRowset::AddRefRows " in der OLE DB-Programmierreferenz.

IRowsetImpl::CreateRow

Eine Hilfsmethode, die von GetNextRows aufgerufen wird, um eine neue HROWzuzuweisen.

Syntax

HRESULT CreateRow(DBROWOFFSET lRowsOffset,
   DBCOUNTITEM& cRowsObtained,
   HROW* rgRows);

Parameter

lRowsOffset
Cursorposition der zu erstellenden Zeile.

cRowsObtained
Ein Verweis, der an den Benutzer übergeben wird, der die Anzahl der erstellten Zeilen angibt.

rgRows
Ein Array von HROWs, das mit den neu erstellten Zeilenhandles an den Aufrufer zurückgegeben wird.

Hinweise

Wenn die Zeile vorhanden ist, ruft diese Methode AddRefRows auf und gibt diese zurück. Andernfalls wird eine neue Instanz der RowClass-Vorlagenvariable zugewiesen und m_rgRowHandles hinzugefügt.

IRowsetImpl::GetData

Ruft Daten aus der Kopie des Rowsets der Zeile ab.

Syntax

STDMETHOD(GetData )(HROW hRow,
   HACCESSOR hAccessor,
   void* pDstData);

Parameter

Siehe "IRowset::GetData " in der OLE DB-Programmierreferenz.

Einige Parameter entsprechen den Referenzparametern des OLE DB-Programmierers verschiedener Namen, die in IRowset::GetData:

OLE DB-Vorlagenparameter Referenzparameter des OLE DB-Programmierers
pDstData Pdata

Hinweise

Behandelt auch die Datenkonvertierung mithilfe der OLE DB-Datenkonvertierungs-DLL.

IRowsetImpl::GetDBStatus

Gibt die DBSTATUS-Statuskennzeichnungen für das angegebene Feld zurück.

Syntax

virtual DBSTATUS GetDBStatus(RowClass* currentRow,
   ATLCOLUMNINFO* columnNames);

Parameter

currentRow
[in] Die aktuelle Zeile.

columnNames
[in] Die Spalte, für die der Status angefordert wird.

Rückgabewert

Die DBSTATUS-Flags für die Spalte.

IRowsetImpl::GetNextRows

Ruft Zeilen sequenziell ab und merkt sich die vorherige Position.

Syntax

STDMETHOD(GetNextRows )(HCHAPTER hReserved,
   DBROWOFFSET lRowsOffset,
   DBROWCOUNT cRows,
   DBCOUNTITEM* pcRowsObtained,
   HROW** prghRows);

Parameter

Siehe "IRowset::GetNextRows " in der OLE DB-Programmierreferenz.

IRowsetImpl::IRowsetImpl

Der Konstruktor.

Syntax

IRowsetImpl();

Hinweise

In der Regel müssen Sie diese Methode nicht direkt aufrufen.

IRowsetImpl::RefRows

Wird von AddRefRows und ReleaseRows aufgerufen, um entweder eine Inkrementierung zu erhöhen oder eine Verweisanzahl auf ein vorhandenes Zeilenhandle freizugeben.

Syntax

HRESULT RefRows(DBCOUNTITEM cRows,
   const HROWrghRows[],
   DBREFCOUNT rgRefCounts[],
   DBROWSTATUS rgRowStatus[],
   BOOL bAdd);

Parameter

Siehe "IRowset::AddRefRows " in der OLE DB-Programmierreferenz.

Rückgabewert

Ein HRESULT-Standardwert.

IRowsetImpl::ReleaseRows

Gibt Zeilen frei.

Syntax

STDMETHOD(ReleaseRows )(DBCOUNTITEM cRows,
   const HROW rghRows[],
   DBROWOPTIONS rgRowOptions[],
   DBREFCOUNT rgRefCounts[],
   DBROWSTATUS rgRowStatus[]);

Parameter

Siehe IRowset::ReleaseRows in der OLE DB-Programmierreferenz.

IRowsetImpl::RestartPosition

Positioniert die nächste Abrufposition an der Anfangsposition. d. h. die Position, an der das Rowset zum ersten Mal erstellt wurde.

Syntax

STDMETHOD(RestartPosition )(HCHAPTER /* hReserved */);

Parameter

Siehe "IRowset::RestartPosition " in der OLE DB-Programmierreferenz.

Hinweise

Die Rowsetposition ist nicht definiert, bis GetNextRow sie aufgerufen wird. Sie können in einem Rowet rückwärts navigieren, indem Sie aufrufen RestartPosition und dann rückwärts scrollen oder abrufen.

IRowsetImpl::SetDBStatus

Legt die DBSTATUS-Statuskennzeichnungen für das angegebene Feld fest.

Syntax

virtual HRESULT SetDBStatus(DBSTATUS* statusFlags,
   RowClass* currentRow,
   ATLCOLUMNINFO* columnInfo);

Parameter

statusFlags
Die DBSTATUS-Flags , die für die Spalte festgelegt werden sollen.

currentRow
Die aktuelle Zeile.

Columninfo
Die Spalte, für die der Status festgelegt wird.

Rückgabewert

Ein HRESULT-Standardwert.

Hinweise

Der Anbieter setzt diese Funktion außer Kraft, um eine spezielle Verarbeitung für DBSTATUS_S_ISNULL und DBSTATUS_S_DEFAULT bereitzustellen.

IRowsetImpl::m_bCanFetchBack

Gibt an, ob ein Anbieter das Rückwärtsabrufen unterstützt.

Syntax

unsigned m_bCanFetchBack:1;

Hinweise

Mit der DBPROP_CANFETCHBACKWARDS Eigenschaft in der DBPROPSET_ROWSET Gruppe verknüpft. Der Anbieter muss unterstützung DBPROP_CANFETCHBACKWARDS dafür m_bCanFetchBackwards sein true.

IRowsetImpl::m_bCanScrollBack

Gibt an, ob ein Anbieter den Cursor rückwärts scrollen kann.

Syntax

unsigned  m_bCanScrollBack:1;

Hinweise

Mit der DBPROP_CANSCROLLBACKWARDS Eigenschaft in der DBPROPSET_ROWSET Gruppe verknüpft. Der Anbieter muss unterstützung DBPROP_CANSCROLLBACKWARDS dafür m_bCanFetchBackwards sein true.

IRowsetImpl::m_bReset

Eine Bitkennzeichnung, die verwendet wird, um zu bestimmen, ob die Cursorposition für das Rowset definiert ist.

Syntax

unsigned m_bReset:1;

Hinweise

Wenn der Consumer GetNextRows mit einem negativen lOffset oder cRows aufruft und m_bReset wahr ist, GetNextRows wird an das Ende des Rowsets verschoben. Wenn m_bReset "false" lautet, erhält der Consumer einen Fehlercode in Übereinstimmung mit der OLE DB-Spezifikation. Das m_bReset Flag wird festgelegt, true wenn das Rowset zum ersten Mal erstellt wird und wenn der Consumer IRowsetImpl::RestartPosition aufruft. Er wird beim Anruf GetNextRowsauf false "Festgelegt" festgelegt.

IRowsetImpl::m_iRowset

Ein Index für das Rowset, der den Cursor darstellt.

Syntax

DBROWOFFSET m_iRowset;

IRowsetImpl::m_rgRowHandles

Eine Zuordnung von Zeilenhandles, die derzeit vom Anbieter als Reaktion auf GetNextRows.

Syntax

MapClass m_rgRowHandles;

Hinweise

Zeilenziehpunkte werden durch Aufrufen ReleaseRowsentfernt. In der IRowsetImpl-Übersicht finden Sie eine Übersicht über die Definition von MapClass.

Siehe auch

OLE DB-Anbietervorlagen
Architektur von OLE DB-Anbietervorlagen
CSimpleRow-Klasse