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
Member
Methoden
Name | Beschreibung |
---|---|
AddRefRows | Erhöht die der aktuellen Zeile zugeordnete Verweisanzahl. |
Abschließ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. |
Delete | 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< 0DBPROP_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_IRowsetLocate
DBPROP_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 Update UpdateAll
abgerufen 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