Freigeben über


CRowset-Klasse

Kapselt ein OLE DB-Rowsetobjekt und mehrere verwandte Schnittstellen und stellt Manipulationsmethoden für Rowsetdaten bereit.

Syntax

template <class TAccessor = CAccessorBase>
class CRowset

Parameter

TAccessor
Eine Accessorklasse. Der Standardwert ist CAccessorBase.

Anforderungen

Header: atldbcli.h

Mitglieder

Methoden

Name Beschreibung
AddRefRows Erhöht die der aktuellen Zeile zugeordnete Verweisanzahl.
Schließen Veröffentlicht Zeilen und die aktuelle IRowset Schnittstelle.
Vergleichen Vergleicht zwei Lesezeichen mithilfe von IRowsetLocate::Compare.
Crowset Erstellt ein neues CRowset Objekt und (optional) ordnet es einer IRowset Schnittstelle zu, die als Parameter bereitgestellt wird.
Löschen Löscht Zeilen aus dem Rowset mithilfe von IRowsetChange:DeleteRows.
FindNextRow Sucht die nächste übereinstimmende Zeile nach der angegebenen Textmarke.
GetApproximatePosition Gibt die ungefähre Position einer Zeile zurück, die einer Textmarke entspricht.
GetData Ruft Daten aus der Kopie des Rowsets der Zeile ab.
Getdatahere Ruft Daten aus dem angegebenen Puffer ab.
GetOriginalData Ruft die Zuletzt abgerufenen oder an die Datenquelle übertragenen Daten ab, wobei ausstehende Änderungen ignoriert werden.
GetRowStatus Gibt den Status aller Zeilen zurück.
Einfügen Erstellt und fügt eine neue Zeile mit IRowsetChange:InsertRow ein.
IsSameRow Vergleicht die angegebene Zeile mit der aktuellen Zeile.
MoveFirst Positioniert die Position des nächsten Abrufs an der Anfangsposition.
MoveLast Wechselt zum letzten Datensatz.
Movenext Ruft Daten aus der nächsten sequenziellen Zeile oder einer angegebenen Anzahl von Positionen ab, die über die nächste Zeile hinausgehen.
MovePrev Wechselt zum vorherigen Datensatz.
MoveToBookmark Ruft die Zeile ab, die durch eine Textmarke oder die Zeile in einem angegebenen Offset von dieser Textmarke markiert ist.
MoveToRatio Ruft Zeilen ab einer Bruchposition im Rowset ab.
ReleaseRows Ruft IRowset::ReleaseRows auf, um das aktuelle Zeilenhandle freizugeben.
Setdata Legt Datenwerte in einer oder mehreren Spalten einer Zeile mithilfe von IRowsetChange:SetData fest.
Rückgängig Hebt alle Änderungen, die seit dem letzten Abruf oder Update an einer Zeile vorgenommen wurden, rückgängig.
Aktualisieren Überträgt alle ausstehenden Änderungen, die seit dem letzten Abruf oder Update an der aktuellen Zeile vorgenommen wurden.
UpdateAll Überträgt alle ausstehenden Änderungen, die seit dem letzten Abruf oder Update an allen Zeilen vorgenommen wurden.

Hinweise

In OLE DB ist ein Rowset das Objekt, über das ein Programm Daten festlegt und abruft.

Diese Klasse soll nicht instanziiert werden, sondern als Vorlagenparameter CTable an oder CCommand (CRowset ist der Standardwert) übergeben werden.

CRowset::AddRefRows

Ruft IRowset::AddRefRows auf, um die dem aktuellen Zeilenhandle zugeordnete Verweisanzahl (um eine) zu erhöhen.

Syntax

HRESULT AddRefRows() throw();

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Mit dieser Methode wird die Referenzanzahl für das aktuelle Zeilenhandle erhöht. Rufen Sie ReleaseRows auf, um die Anzahl zu erhöhen. Zeilen, die von den Move-Methoden zurückgegeben werden, weisen eine Referenzanzahl von 1 auf.

CRowset::Close

Veröffentlicht Zeilen und die aktuelle IRowset-Schnittstelle .

Syntax

void Close() throw();

Hinweise

Diese Methode gibt alle Zeilen zurzeit im Rowset frei.

CRowset::Compare

Vergleicht zwei Lesezeichen mithilfe von IRowsetLocate::Compare.

Syntax

HRESULT Compare(const CBookmarkBase& bookmark1,
   const CBookmarkBase& bookmark2,
   DBCOMPARE* pComparison) const throw();

Parameter

Bookmark1
[in] Die erste zu vergleichende Textmarke.

Bookmark2
[in] Die zweite zu vergleichende Textmarke.

pComparison
[out] Ein Zeiger auf das Ergebnis des Vergleichs.

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Diese Methode erfordert die optionale Schnittstelle IRowsetLocate, die möglicherweise nicht für alle Anbieter unterstützt wird. Wenn dies der Fall ist, gibt die Methode E_NOINTERFACE zurück. Sie müssen auch auf VARIANT_TRUE festlegen DBPROP_IRowsetLocate , bevor Sie die Tabelle oder den Befehl aufrufen Open , die das Rowset enthält.

Informationen zur Verwendung von Lesezeichen in Consumern finden Sie unter Verwenden von Lesezeichen.

CRowset::CRowset

Erstellt ein neues CRowset Objekt und (optional) ordnet es einer als Parameter bereitgestellten IRowset-Schnittstelle zu.

Syntax

CRowset();

CRowset(IRowset* pRowset);

Parameter

pRowset
[in] Ein Zeiger auf eine IRowset Schnittstelle, die dieser Klasse zugeordnet werden soll.

CRowset::Delete

Ruft IRowsetChange::D eleteRows auf, um die aktuelle Zeile aus dem Rowset zu löschen.

Syntax

HRESULT Delete() const throw();

Rückgabewert

Ein Standard-HRESULT.

CRowset::FindNextRow

Sucht die nächste übereinstimmende Zeile nach der angegebenen Textmarke.

Syntax

HRESULT FindNextRow(DBCOMPAREOP op,
   BYTE* pData,
   DBTYPE wType,
   DBLENGTH nLength,
   BYTE bPrecision,
   BYTE bScale,
   BOOL bSkipCurrent = TRUE,
   CBookmarkBase* pBookmark = NULL) throw();

Parameter

op
[in] Der Vorgang, der beim Vergleichen von Zeilenwerten verwendet werden soll. Werte finden Sie unter "IRowsetFind::FindNextRow".

Pdata
[in] Ein Zeiger auf den Wert, der abgeglichen werden soll.

wType
[in] Gibt den Datentyp des Wertteils des Puffers an. Informationen zu Typindikatoren finden Sie unter Datentypen in der OLE DB-Programmierreferenz im Windows SDK.

nLength
[in] Die Länge der Für den Datenwert zugeordneten Consumerdatenstruktur in Bytes. Ausführliche Informationen finden Sie in der Beschreibung der cbMaxLen DBBINDING-Strukturen in der OLE DB-Programmierreferenz.

bPrecision
[in] Die maximale Genauigkeit, die beim Abrufen von Daten verwendet wird. Wird nur verwendet, wenn wType DBTYPE_NUMERIC ist. Weitere Informationen finden Sie unter Konvertierungen mit DBTYPE_NUMERIC oder DBTYPE_DECIMAL in der OLE DB-Programmierreferenz.

bScale
[in] Die Skalierung, die beim Abrufen von Daten verwendet wird. Wird nur verwendet, wenn wType DBTYPE_NUMERIC oder DBTYPE_DECIMAL ist. Weitere Informationen finden Sie unter Konvertierungen mit DBTYPE_NUMERIC oder DBTYPE_DECIMAL in der OLE DB-Programmierreferenz.

bSkipCurrent
[in] Die Anzahl der Zeilen aus der Textmarke, an der eine Suche gestartet werden soll.

pBookmark
[in] Die Textmarke für die Position, an der eine Suche gestartet werden soll.

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Diese Methode erfordert die optionale Schnittstelle IRowsetFind, die möglicherweise nicht für alle Anbieter unterstützt wird. Wenn dies der Fall ist, gibt die Methode E_NOINTERFACE zurück. Sie müssen auch auf VARIANT_TRUE festlegen DBPROP_IRowsetFind , bevor Sie die Tabelle oder den Befehl aufrufen Open , die das Rowset enthält.

Informationen zur Verwendung von Lesezeichen in Consumern finden Sie unter Verwenden von Lesezeichen.

CRowset::GetApproximatePosition

Gibt die ungefähre Position einer Zeile zurück, die einer Textmarke entspricht.

Syntax

HRESULT GetApproximatePosition(const CBookmarkBase* pBookmark,
   DBCOUNTITEM* pPosition,
   DBCOUNTITEM* pcRows) throw();

Parameter

pBookmark
[in] Ein Zeiger auf eine Textmarke, die die Zeile identifiziert, deren Position gefunden werden soll. NULL, wenn nur die Zeilenanzahl erforderlich ist.

pPosition
[out] Ein Zeiger auf die Position, GetApproximatePosition an der die Position der Zeile zurückgegeben wird. NULL, wenn die Position nicht erforderlich ist.

pcRows
[out] Ein Zeiger auf die Position, GetApproximatePosition an der die Gesamtzahl der Zeilen zurückgegeben wird. NULL, wenn die Zeilenanzahl nicht erforderlich ist.

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Diese Methode erfordert die optionale Schnittstelle IRowsetScroll, die möglicherweise nicht für alle Anbieter unterstützt wird. Wenn dies der Fall ist, gibt die Methode E_NOINTERFACE zurück. Sie müssen auch auf VARIANT_TRUE festlegen DBPROP_IRowsetScroll , bevor Sie die Tabelle oder den Befehl aufrufen Open , die das Rowset enthält.

Informationen zur Verwendung von Lesezeichen in Consumern finden Sie unter Verwenden von Lesezeichen.

CRowset::GetData

Ruft Daten aus der Kopie des Rowsets der Zeile ab.

Syntax

HRESULT GetData() throw();

HRESULT GetData(int nAccessor) throw();

Parameter

nAccessor
[in] Die Indexnummer (Null-Offset) des Accessors, der für den Zugriff auf die Daten verwendet werden soll.

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Wenn Sie einen Accessor angeben, der in BEGIN_ACCESSOR kein AutoAccessor ist, verwenden Sie diese Methode, um die Daten explizit abzurufen, indem Sie die Accessornummer übergeben.

CRowset::GetDataHere

Ruft Daten aus der aktuellen Zeile ab und platziert sie in den angegebenen Puffer.

Syntax

HRESULT GetDataHere(int nAccessor,
   void* pBuffer) throw();

Parameter

nAccessor
[in] Die Indexnummer des Accessors, der für den Zugriff auf die Daten verwendet werden soll.

pBuffer
[out] Ein Puffer, in den die Daten für den aktuellen Datensatz platziert werden sollen.

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Ein Beispiel für die Verwendung dieser Funktion finden Sie im MultiRead-Beispiel.

CRowset::GetOriginalData

Aufrufe IRowsetUpdate::GetOriginalData zum Abrufen der Daten, die zuletzt von der Datenquelle abgerufen oder an die Datenquelle übertragen wurden.

Syntax

HRESULT GetOriginalData() throw();

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Diese Methode ruft die Daten ab, die zuletzt von der Datenquelle abgerufen oder an die Datenquelle übertragen wurden; Es werden keine Werte basierend auf ausstehenden Änderungen abgerufen.

Diese Methode erfordert die optionale Schnittstelle IRowsetUpdate, die möglicherweise nicht für alle Anbieter unterstützt wird. Wenn dies der Fall ist, gibt die Methode E_NOINTERFACE zurück. Sie müssen auch auf VARIANT_TRUE festlegen DBPROP_IRowsetUpdate , bevor Sie die Tabelle oder den Befehl aufrufen Open , die das Rowset enthält.

CRowset::GetRowStatus

Gibt den Status aller Zeilen zurück.

Syntax

HRESULT GetRowStatus(DBPENDINGSTATUS* pStatus) const throw();

Parameter

pStatus
[out] Ein Zeiger auf eine Position, an der GetRowStatus der Statuswert zurückgegeben wird. Siehe DBPENDINGSTATUS in der OLE DB-Programmierreferenz.

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Diese Methode erfordert die optionale Schnittstelle IRowsetUpdate, die möglicherweise nicht für alle Anbieter unterstützt wird. Wenn dies der Fall ist, gibt die Methode E_NOINTERFACE zurück. Sie müssen auch auf VARIANT_TRUE festlegen DBPROP_IRowsetUpdate , bevor Sie die Tabelle oder den Befehl aufrufen Open , die das Rowset enthält.

CRowset::Insert

Erstellt und initialisiert eine neue Zeile mithilfe von Daten vom Accessor.

Syntax

HRESULT Insert(int nAccessor = 0,
   bool bGetHRow = false) throw();

Parameter

nAccessor
[in] Die Nummer des Accessors, der zum Einfügen der Daten verwendet werden soll.

bGetHRow
[in] Gibt an, ob das Handle für die eingefügte Zeile abgerufen wird.

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Diese Methode erfordert die optionale Schnittstelle IRowsetChange, die möglicherweise nicht für alle Anbieter unterstützt wird. Wenn dies der Fall ist, gibt die Methode E_NOINTERFACE zurück. Sie müssen auch auf VARIANT_TRUE festlegen DBPROP_IRowsetChange , bevor Sie die Tabelle oder den Befehl aufrufen Open , die das Rowset enthält.

Das Einfügen schlägt möglicherweise fehl, wenn mindestens eine Spalte nicht schreibbar ist. Ändern Sie die Cursorzuordnung, um diesen Fehler zu beheben.

Beispiel

Das folgende Beispiel zeigt, wie Sie über ein Rowset auf eine Datenquelle zugreifen und dann eine Zeichenfolge mithilfe einer Tabelle in diesem Rowset einfügen.

Erstellen Sie zunächst eine Tabellenklasse, indem Sie ein neues ATL-Objekt in Ihr Projekt einfügen. Klicken Sie beispielsweise mit der rechten Maustaste auf das Projekt im Arbeitsbereichsbereich, und wählen Sie "Neues ATL-Objekt" aus. Wählen Sie in der Kategorie "Datenzugriff" die Option "Consumer" aus. Erstellen Sie ein Consumerobjekt vom Typ "Table". (Auswählen Tabelle erstellt ein Rowset direkt aus der Tabelle. Wenn Sie Befehl auswählen, wird ein Rowset über einen SQL-Befehl erstellt.) Wählen Sie eine Datenquelle aus, und geben Sie eine Tabelle an, über die auf diese Datenquelle zugegriffen werden soll. Wenn Sie das Consumerobjekt CCustomerTable aufrufen, implementieren Sie dann den Einfügecode wie folgt:

// Access the rowset using the wizard-generated class, CCustomerTable
CCustomerTable rs;           // Your CTable-derived class

// Insert a customer
// Note that for fixed-length fields such as billing ID it isn't necessary
// to set the length
rs.m_BillingID = 5002;
rs.m_dwBillingIDStatus = DBSTATUS_S_OK;

_tcscpy_s(rs.m_ContactFirstName, sizeof(rs.m_ContactFirstName) / sizeof(TCHAR), 
   _T("Malcolm"));
rs.m_dwContactFirstNameLength = 7;
rs.m_dwContactFirstNameStatus = DBSTATUS_S_OK;

_tcscpy_s(rs.m_L_Name, sizeof(rs.m_L_Name) / sizeof(TCHAR), _T("Reynolds"));
rs.m_dwL_NameLength = 8;
rs.m_dwContactFirstNameStatus = DBSTATUS_S_OK;

rs.m_CustomerID = 2005;
rs.m_dwCustomerIDStatus = DBSTATUS_S_OK;

_tcscpy_s(rs.m_PostalCode, sizeof(rs.m_PostalCode) / sizeof(TCHAR), 
   _T("34213-4444"));
rs.m_dwPostalCodeLength = 10;
rs.m_dwPostalCodeStatus = DBSTATUS_S_OK;

HRESULT hr = rs.Insert();
if (FAILED(hr))
{
   ATLTRACE(_T("Insert failed: 0x%X\n"), hr);
}

CRowset::IsSameRow

Vergleicht die angegebene Zeile mit der aktuellen Zeile.

Syntax

HRESULT IsSameRow(HROW hRow) const throw();

Parameter

hRow
[in] Ein Handle für die Zeile, die mit der aktuellen Zeile verglichen werden soll.

Rückgabewert

Ein Standard-HRESULT. S_OK gibt an, dass die Zeilen identisch sind. Weitere Werte finden Sie unter "IRowsetIndentity::IsSameRow " in der OLE DB-Programmierreferenz im Windows SDK.

CRowset::MoveFirst

Verschiebt den Cursor an die Anfangsposition und ruft die erste Zeile ab.

Syntax

HRESULT MoveFirst() throw();

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Ruft "IRowset::RestartPosition " auf, um die Position des nächsten Abrufs an die Anfangsposition (die Position, die beim Erstellen des Rowsets die nächste Abrufposition war) neu zu positionieren und die erste Zeile abzurufen.

CRowset::MoveLast

Verschiebt den Cursor zur letzten Zeile.

Syntax

HRESULT MoveLast() throw();

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Ruft "IRowset::RestartPosition " auf, um die Position des nächsten Abrufs an die letzte Position zu ändern und die letzte Zeile abzurufen.

Diese Methode erfordert, dass Sie vor dem Aufrufen Open der Tabelle oder des Befehls, der das Rowset enthält, auf VARIANT_TRUE festlegenDBPROP_CANSCROLLBACKWARDS. (Um eine bessere Leistung zu erzielen, können Sie auch auf VARIANT_TRUE festlegen DBPROP_QUICKRESTART .)

CRowset::MoveNext

Verschiebt den Cursor zum nächsten Datensatz.

Syntax

HRESULT MoveNext() throw();

HRESULT MoveNext(LONG lSkip,
   bool bForward= true) throw();

Parameter

lSkip
[in] Die Anzahl der Zeilen, die vor dem Abrufen übersprungen werden sollen.

bForward
[in] Übergeben Sie true den Cursor, um zum nächsten Datensatz zu wechseln, false um rückwärts zu wechseln.

Rückgabewert

Ein Standard-HRESULT. Wenn das Ende des Rowsets erreicht wurde, wird DB_S_ENDOFROWSET zurückgegeben.

Hinweise

Ruft die nächste sequenzielle Zeile aus dem CRowset Objekt ab und merkt sich die vorherige Position. Optional können Sie auswählen, ob Sie lSkip-Zeilen überspringen oder rückwärts wechseln möchten.

Für diese Methode müssen Sie die folgenden Eigenschaften festlegen, bevor Sie die Tabelle oder den Befehl aufrufen Open , die das Rowset enthält:

  • DBPROP_CANSCROLLBACKWARDS muss VARIANT_TRUE sein, wenn lSkip< 0

  • DBPROP_CANFETCHBACKWARDS muss VARIANT_TRUE sein, wenn bForward = false

Andernfalls (wenn lSkip>= 0 und bForward = true) müssen Sie keine zusätzlichen Eigenschaften festlegen.

CRowset::MovePrev

Verschiebt den Cursor zum vorherigen Datensatz.

Syntax

HRESULT MovePrev() throw();

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Diese Methode erfordert, dass Sie entweder DBPROP_CANFETCHBACKWARDS oder DBPROP_CANSCROLLBACKWARDS auf VARIANT_TRUE festlegen, bevor Sie die Tabelle oder den Befehl aufrufen Open , der das Rowset enthält.

CRowset::MoveToBookmark

Ruft die Zeile, die durch eine Textmarke oder die Zeile an einem angegebenen Offset (lSkip) markiert ist, von dieser Textmarke ab.

Syntax

HRESULT MoveToBookmark(const CBookmarkBase& bookmark,
   LONG lSkip = 0) throw();

Parameter

bookmark
[in] Eine Textmarke, die den Speicherort markiert, von dem Sie Daten abrufen möchten.

lSkip
[in] Die Anzahl der Zeilen von der Textmarke in die Zielzeile. Wenn "lSkip " null ist, ist die erste abgerufene Zeile die Textmarke. Wenn lSkip 1 ist, ist die erste abgerufene Zeile die Zeile nach der textmarkeierten Zeile. Wenn lSkip -1 ist, ist die erste abgerufene Zeile die Zeile vor der mit einer Textmarke versehenen Zeile.

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Diese Methode erfordert die optionale Schnittstelle IRowsetLocate, die möglicherweise nicht für alle Anbieter unterstützt wird. Wenn dies der Fall ist, gibt die Methode E_NOINTERFACE zurück. Sie müssen auch auf VARIANT_TRUE und auf VARIANT_TRUE festlegen DBPROP_IRowsetLocateDBPROP_CANFETCHBACKWARDS , bevor Sie die Tabelle oder den Befehl aufrufen Open , die das Rowset enthält.

Informationen zur Verwendung von Lesezeichen in Consumern finden Sie unter Verwenden von Lesezeichen.

CRowset::MoveToRatio

Ruft Zeilen ab einer Bruchposition im Rowset ab.

Syntax

HRESULT MoveToRatio(DBCOUNTITEM nNumerator,
   DBCOUNTITEM nDenominator,bool bForward = true) throw();

Parameter

nNumerator
[in] Der Zähler, der verwendet wird, um die Bruchposition zu bestimmen, aus der Daten abgerufen werden sollen.

nDenominator
[in] Der Nenner, der verwendet wird, um die Bruchposition zu bestimmen, aus der Daten abgerufen werden sollen.

bForward
[in] Gibt an, ob vorwärts oder rückwärts verschoben werden soll. Der Standardwert ist vorwärts.

Rückgabewert

Ein Standard-HRESULT.

Hinweise

MoveToRatio Ruft Zeilen nach ungefähr der folgenden Formel ab:

(nNumerator * RowsetSize ) / nDenominator

dabei RowsetSize handelt es sich um die Größe des Rowsets, gemessen in Zeilen. Die Genauigkeit dieser Formel hängt vom jeweiligen Anbieter ab. Weitere Informationen finden Sie unter "IRowsetScroll::GetRowsAtRatio".

Diese Methode erfordert die optionale Schnittstelle IRowsetScroll, die möglicherweise nicht für alle Anbieter unterstützt wird. Wenn dies der Fall ist, gibt die Methode E_NOINTERFACE zurück. Sie müssen auch auf VARIANT_TRUE festlegen DBPROP_IRowsetScroll , bevor Sie die Tabelle oder den Befehl aufrufen Open , die das Rowset enthält.

CRowset::ReleaseRows

Ruft IRowset::ReleaseRows auf, um das aktuelle Zeilenhandle freizugeben.

Syntax

HRESULT ReleaseRows() throw();

Rückgabewert

Ein Standard-HRESULT.

CRowset::SetData

Legt Datenwerte in einer oder mehreren Spalten einer Zeile fest.

Syntax

HRESULT SetData() const throw();

HRESULT SetData(int nAccessor) const throw();

Parameter

nAccessor
[in] Die Nummer des Accessors, der für den Zugriff auf die Daten verwendet werden soll.

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Für das SetData Formular, das keine Argumente akzeptiert, werden alle Accessoren für die Aktualisierung verwendet. Sie rufen SetData in der Regel auf, Datenwerte in Spalten in einer Zeile festzulegen, und rufen dann "Update" auf, um diese Änderungen zu übertragen.

Diese Methode erfordert die optionale Schnittstelle IRowsetChange, die möglicherweise nicht für alle Anbieter unterstützt wird. Wenn dies der Fall ist, gibt die Methode E_NOINTERFACE zurück. Sie müssen auch auf VARIANT_TRUE festlegen DBPROP_IRowsetChange , bevor Sie die Tabelle oder den Befehl aufrufen Open , die das Rowset enthält.

Der Einstellungsvorgang schlägt möglicherweise fehl, wenn mindestens eine Spalte nicht schreibbar ist. Ändern Sie die Cursorzuordnung, um diesen Fehler zu beheben.

CRowset::Undo

Hebt alle Änderungen, die seit dem letzten Abruf oder Update an einer Zeile vorgenommen wurden, rückgängig.

Syntax

HRESULT Undo(DBCOUNTITEM* pcRows = NULL,
   HROW* phRow = NULL,
   DBROWSTATUS* pStatus = NULL) throw();

Parameter

pcRows
[out] Ein Zeiger auf die Position, Undo an der die Anzahl der Zeilen zurückgegeben wird, die bei Bedarf rückgängig zu machen versucht wurde.

phRow
[out] Ein Zeiger auf die Position, an Undo der ein Array von Handles an alle Zeilen zurückgegeben wird, die bei Bedarf rückgängig zu machen versucht wurden.

pStatus
[out] Ein Zeiger auf die Position, Undo an der der Zeilenstatuswert zurückgegeben wird. Es wird kein Status zurückgegeben, wenn pStatus null ist.

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Diese Methode erfordert die optionale Schnittstelle IRowsetUpdate, die möglicherweise nicht für alle Anbieter unterstützt wird. Wenn dies der Fall ist, gibt die Methode E_NOINTERFACE zurück. Sie müssen auch auf VARIANT_TRUE festlegen DBPROP_IRowsetUpdate , bevor Sie die Tabelle oder den Befehl aufrufen Open , die das Rowset enthält.

CRowset::Update

Überträgt alle ausstehenden Änderungen, die seit dem letzten Abruf oder Update Anruf an der aktuellen Zeile vorgenommen wurden.

Syntax

HRESULT Update(DBCOUNTITEM* pcRows = NULL,
   HROW* phRow = NULL,
   DBROWSTATUS* pStatus = NULL) throw();

Parameter

pcRows
[out] Ein Zeiger auf die Position, Update an der die Anzahl der Zeilen zurückgegeben wird, die bei Bedarf aktualisiert werden sollen.

phRow
[out] Ein Zeiger auf die Position, Update an der das Handle der Zeile zurückgegeben wird, die aktualisiert werden soll. Es wird kein Handle zurückgegeben, wenn phRow null ist.

pStatus
[out] Ein Zeiger auf die Position, Update an der der Zeilenstatuswert zurückgegeben wird. Es wird kein Status zurückgegeben, wenn pStatus null ist.

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Überträgt alle ausstehenden Änderungen, die an der aktuellen Zeile vorgenommen wurden, seit diese Zeile zuletzt abgerufen oder aktualisiert wurde (mit Update oder UpdateAll). In der Regel rufen Update Sie SetData auf, um Datenwerte in Spalten in einer Zeile festzulegen, und rufen sie dann auf, um diese Änderungen zu übertragen.

Diese Methode erfordert die optionale Schnittstelle IRowsetUpdate, die möglicherweise nicht für alle Anbieter unterstützt wird. Wenn dies der Fall ist, gibt die Methode E_NOINTERFACE zurück. Sie müssen auch auf VARIANT_TRUE festlegen DBPROP_IRowsetUpdate , bevor Sie die Tabelle oder den Befehl aufrufen Open , die das Rowset enthält.

CRowset::UpdateAll

Überträgt alle ausstehenden Änderungen, die seit dem letzten Abruf oder Update Anruf an allen Zeilen vorgenommen wurden.

Syntax

HRESULT UpdateAll(DBCOUNTITEM* pcRows = NULL,
   HROW** pphRow = NULL,
   DBROWSTATUS** ppStatus = NULL) throw();

Parameter

pcRows
[out] Ein Zeiger auf die Position, UpdateAll an der die Anzahl der Zeilen zurückgegeben wird, die bei Bedarf aktualisiert werden sollen.

pphRow
[out] Ein Zeiger auf den Speicher, in dem UpdateAll das Handle der Zeile zurückgegeben wird, die aktualisiert werden soll. Es wird kein Handle zurückgegeben, wenn pphRow null ist.

ppStatus
[out] Ein Zeiger auf die Position, Update an der der Zeilenstatuswert zurückgegeben wird. Es wird kein Status zurückgegeben, wenn ppStatus null ist.

Hinweise

Überträgt alle ausstehenden Änderungen, die an allen Zeilen vorgenommen wurden, da diese Zeilen zuletzt mithilfe von UpdateUpdateAllabgerufen oder aktualisiert wurden. UpdateAll aktualisiert jede Zeile, die geändert wurde, unabhängig davon, ob Sie noch über das Handle verfügen (siehe pphRow) oder nicht.

Wenn Sie Insert beispielsweise fünf Zeilen in ein Rowset eingefügt haben, können Sie entweder fünf Mal anrufen Update oder einmal anrufen UpdateAll , um sie alle zu aktualisieren.

Diese Methode erfordert die optionale Schnittstelle IRowsetUpdate, die möglicherweise nicht für alle Anbieter unterstützt wird. Wenn dies der Fall ist, gibt die Methode E_NOINTERFACE zurück. Sie müssen auch auf VARIANT_TRUE festlegen DBPROP_IRowsetUpdate , bevor Sie die Tabelle oder den Befehl aufrufen Open , die das Rowset enthält.

Rückgabewert

Ein Standard-HRESULT.

Siehe auch

DBViewer-Beispiel
MultiRead-Beispiel
Beispiel für MultiRead-Attribute
OLE DB-Consumervorlagen
Referenz der OLE DB-Consumervorlagen