Dela via


CRowset-klass

Kapslar in ett OLE DB-raduppsättningsobjekt och flera relaterade gränssnitt och tillhandahåller manipulationsmetoder för raduppsättningsdata.

Syntax

template <class TAccessor = CAccessorBase>
class CRowset

Parameterar

Cessor
En accessor-klass. Standardvärdet är CAccessorBase.

Kravspecifikation

Rubrik: atldbcli.h

Medlemmar

Metoder

Namn Beskrivning
AddRefRows Ökar det referensantal som är associerat med den aktuella raden.
Stänga Släpper rader och det aktuella IRowset gränssnittet.
Jämför Jämför två bokmärken med IRowsetLocate::Compare.
CRowset Skapar ett nytt CRowset objekt och (valfritt) associerar det med ett IRowset gränssnitt som tillhandahålls som en parameter.
Ta bort Tar bort rader från raduppsättningen med IRowsetChange::D eleteRows.
HittaNästaRad Söker efter nästa matchande rad efter det angivna bokmärket.
GetApproximatePosition Returnerar den ungefärliga positionen för en rad som motsvarar ett bokmärke.
GetData (på engelska) Hämtar data från raduppsättningens kopia av raden.
GetDataHere Hämtar data från den angivna bufferten.
GetOriginalData Hämtar data som senast hämtades från eller överfördes till datakällan och ignorerar väntande ändringar.
GetRowStatus Returnerar status för alla rader.
Infoga Skapar och infogar en ny rad med IRowsetChange::InsertRow.
IsSameRow (på engelska) Jämför den angivna raden med den aktuella raden.
Flytta först Flyttar platsen för nästa hämtning till den ursprungliga positionen.
FlyttaSista Flyttar till den sista posten.
FlyttaNästa Hämtar data från nästa sekventiella rad eller ett angivet antal positioner bortom nästa rad.
FlyttaFöregående Flyttar till föregående post.
MoveToBookmark (FlyttaTillBokmärke) Hämtar raden markerad med ett bokmärke eller raden vid en angiven förskjutning från bokmärket.
MoveToRatio (på engelska) Hämtar rader som börjar från en bråkposition i raduppsättningen.
ReleaseRows (Släpp rader) Anropar IRowset::ReleaseRows för att frigöra det aktuella radhandtaget.
Ställa in data Anger datavärden i en eller flera kolumner i en rad med IRowsetChange::SetData.
Ångra Ångrar ändringar som gjorts i en rad sedan den senaste hämtningen eller uppdateringen.
Uppdatera Överför eventuella väntande ändringar som gjorts i den aktuella raden sedan den senaste hämtningen eller uppdateringen.
UppdateringAlla Överför eventuella väntande ändringar som gjorts i alla rader sedan den senaste hämtningen eller uppdateringen.

Anmärkningar

I OLE DB är en raduppsättning det objekt genom vilket ett program ställer in och hämtar data.

Den här klassen är inte avsedd att instansieras utan skickas i stället som en mallparameter till CTable eller CCommand (CRowset är standard).

CRowset::AddRefRows

Anropar IRowset::AddRefRows för att öka (efter en) det referensantal som är associerat med den aktuella radreferensen.

Syntax

HRESULT AddRefRows() throw();

Returvärde

En standard HRESULT.

Anmärkningar

Den här metoden ökar referensantalet för den aktuella radreferensen. Anropa ReleaseRows för att minska antalet. Rader som returneras av flyttmetoderna har ett referensantal.

CRowset::Stäng

Släpper rader och det aktuella IRowset-gränssnittet .

Syntax

void Close() throw();

Anmärkningar

Den här metoden släpper alla rader som för närvarande finns i raduppsättningen.

CRowset::Jämför

Jämför två bokmärken med IRowsetLocate::Compare.

Syntax

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

Parameterar

Bokmärke1
[i] Det första bokmärket att jämföra.

Bokmärke2
[i] Det andra bokmärket att jämföra.

pJämförelse
[ut] En pekare till resultatet av jämförelsen.

Returvärde

En standard HRESULT.

Anmärkningar

Den här metoden kräver det valfria gränssnittet IRowsetLocate, som kanske inte stöds på alla leverantörer. Om så är fallet returnerar metoden E_NOINTERFACE. Du måste också ange DBPROP_IRowsetLocate till VARIANT_TRUE innan du anropar Open i tabellen eller kommandot som innehåller raduppsättningen.

Information om hur du använder bokmärken i konsumenter finns i Använda bokmärken.

CRowset::CRowset

Skapar ett nytt CRowset objekt och (valfritt) associerar det med ett IRowset-gränssnitt som tillhandahålls som en parameter.

Syntax

CRowset();

CRowset(IRowset* pRowset);

Parameterar

pRowset
[i] En pekare till ett IRowset gränssnitt som ska associeras med den här klassen.

CRowset::D elete

Anropar IRowsetChange::D eleteRows för att ta bort den aktuella raden från raduppsättningen.

Syntax

HRESULT Delete() const throw();

Returvärde

En standard HRESULT.

CRowset::FindNextRow

Söker efter nästa matchande rad efter det angivna bokmärket.

Syntax

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

Parameterar

Op
[i] Den åtgärd som ska användas för att jämföra radvärden. Värden finns i IRowsetFind::FindNextRow.

pData (på engelska)
[i] En pekare till det värde som ska matchas.

wTyp
[i] Anger datatypen för värdedelen av bufferten. Information om typindikatorer finns i Datatyper i OLE DB-programmerarens referens i Windows SDK.

nLängd
[i] Längden, i byte, på den konsumentdatastruktur som allokerats för datavärdet. Mer information finns i beskrivningen av cbMaxLen i DBBINDING-strukturer i OLE DB-programmerarens referens.

bFörberedelse
[i] Den maximala precision som används vid hämtar data. Används endast om wType är DBTYPE_NUMERIC. Mer information finns i Konverteringar som involverar DBTYPE_NUMERIC eller DBTYPE_DECIMAL i OLE DB-programmerarens referens.

bSkala
[i] Skalan som används när du hämtar data. Används endast om wType är DBTYPE_NUMERIC eller DBTYPE_DECIMAL. Mer information finns i Konverteringar som involverar DBTYPE_NUMERIC eller DBTYPE_DECIMAL i OLE DB-programmerarens referens.

bSkipCurrent
[i] Antalet rader från bokmärket där en sökning ska startas.

pBokmärke
[i] Bokmärket för position där sökningen ska startas.

Returvärde

En standard HRESULT.

Anmärkningar

Den här metoden kräver det valfria gränssnittet IRowsetFind, som kanske inte stöds på alla leverantörer. Om så är fallet returnerar metoden E_NOINTERFACE. Du måste också ange DBPROP_IRowsetFind till VARIANT_TRUE innan du anropar Open i tabellen eller kommandot som innehåller raduppsättningen.

Information om hur du använder bokmärken i konsumenter finns i Använda bokmärken.

CRowset::GetApproximatePosition

Returnerar den ungefärliga positionen för en rad som motsvarar ett bokmärke.

Syntax

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

Parameterar

pBokmärke
[i] En pekare till ett bokmärke som identifierar raden vars position ska hittas. NULL om endast radantalet krävs.

pPosition
[ut] En pekare till platsen där GetApproximatePosition returnerar radens position. NULL om positionen inte krävs.

pcrows (på engelska)
[ut] En pekare till den plats där GetApproximatePosition returnerar det totala antalet rader. NULL om radantalet inte krävs.

Returvärde

En standard HRESULT.

Anmärkningar

Den här metoden kräver det valfria gränssnittet IRowsetScroll, som kanske inte stöds på alla leverantörer. Om så är fallet returnerar metoden E_NOINTERFACE. Du måste också ange DBPROP_IRowsetScroll till VARIANT_TRUE innan du anropar Open i tabellen eller kommandot som innehåller raduppsättningen.

Information om hur du använder bokmärken i konsumenter finns i Använda bokmärken.

CRowset::GetData

Hämtar data från raduppsättningens kopia av raden.

Syntax

HRESULT GetData() throw();

HRESULT GetData(int nAccessor) throw();

Parameterar

nAccessor
[i] Indexnumret (nollförskjutning) för den accessor som ska användas för åtkomst till data.

Returvärde

En standard HRESULT.

Anmärkningar

Om du anger en accessor som inte är en automatisk åtkomst i BEGIN_ACCESSOR använder du den här metoden för att explicit hämta data genom att skicka åtkomstnumret.

CRowset::GetDataHere

Hämtar data från den aktuella raden och placerar dem i den angivna bufferten.

Syntax

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

Parameterar

nAccessor
[i] Indexnumret för den åtkomst som ska användas för att komma åt data.

pBuffer
[ut] En buffert där du kan placera data för den aktuella posten.

Returvärde

En standard HRESULT.

Anmärkningar

Ett exempel på hur du använder den här funktionen finns i MultiRead-exemplet.

CRowset::GetOriginalData

Anropar IRowsetUpdate::GetOriginalData för att hämta de data som senast hämtades från eller överfördes till datakällan.

Syntax

HRESULT GetOriginalData() throw();

Returvärde

En standard HRESULT.

Anmärkningar

Den här metoden hämtar de data som senast hämtades från eller överfördes till datakällan. den hämtar inte värden baserat på väntande ändringar.

Den här metoden kräver det valfria gränssnittet IRowsetUpdate, som kanske inte stöds på alla leverantörer. Om så är fallet returnerar metoden E_NOINTERFACE. Du måste också ange DBPROP_IRowsetUpdate till VARIANT_TRUE innan du anropar Open i tabellen eller kommandot som innehåller raduppsättningen.

CRowset::GetRowStatus

Returnerar status för alla rader.

Syntax

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

Parameterar

pStatus
[ut] En pekare till en plats där GetRowStatus returnerar statusvärdet. Se DBPENDINGSTATUS i OLE DB-programmerarens referens.

Returvärde

En standard HRESULT.

Anmärkningar

Den här metoden kräver det valfria gränssnittet IRowsetUpdate, som kanske inte stöds på alla leverantörer. Om så är fallet returnerar metoden E_NOINTERFACE. Du måste också ange DBPROP_IRowsetUpdate till VARIANT_TRUE innan du anropar Open i tabellen eller kommandot som innehåller raduppsättningen.

CRowset::Infoga

Skapar och initierar en ny rad med hjälp av data från accessorn.

Syntax

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

Parameterar

nAccessor
[i] Antalet som ska användas för att infoga data.

bGetHRow
[i] Anger om handtaget för den infogade raden hämtas.

Returvärde

En standard HRESULT.

Anmärkningar

Den här metoden kräver det valfria gränssnittet IRowsetChange, som kanske inte stöds på alla leverantörer. Om så är fallet returnerar metoden E_NOINTERFACE. Du måste också ange DBPROP_IRowsetChange till VARIANT_TRUE innan du anropar Open i tabellen eller kommandot som innehåller raduppsättningen.

Infoga kan misslyckas om en eller flera kolumner inte kan skrivas. Ändra markörens karta för att korrigera detta.

Exempel

I följande exempel visas hur du kommer åt en datakälla via en raduppsättning och sedan infogar en sträng med hjälp av en tabell i raduppsättningen.

Skapa först en tabellklass genom att infoga ett nytt ATL-objekt i projektet. Högerklicka till exempel på projektet i fönstret Arbetsyta och välj Nytt ATL-objekt. I kategorin Dataåtkomst väljer du Konsument. Skapa ett konsumentobjekt av typen Tabell. (Om du väljer Tabell skapas en raduppsättning direkt från tabellen. Om du väljer Kommando skapas en raduppsättning via ett SQL-kommando.) Välj en datakälla och ange en tabell för åtkomst till datakällan. Om du anropar konsumentobjektet CCustomerTable implementerar du insättningskoden på följande sätt:

// 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

Jämför den angivna raden med den aktuella raden.

Syntax

HRESULT IsSameRow(HROW hRow) const throw();

Parameterar

hRow
[i] Ett handtag till raden som ska jämföras med den aktuella raden.

Returvärde

En standard HRESULT. S_OK anger att raderna är desamma. Andra värden finns i IRowsetIndentity::IsSameRow i OLE DB-programmerarens referens i Windows SDK.

CRowset::MoveFirst

Flyttar markören till den inledande positionen och hämtar den första raden.

Syntax

HRESULT MoveFirst() throw();

Returvärde

En standard HRESULT.

Anmärkningar

Anropar IRowset::RestartPosition för att flytta platsen för nästa hämtning till den första positionen (den position som var platsen för nästa hämtning när raduppsättningen skapades) och hämtar den första raden.

CRowset::MoveLast

Flyttar markören till den sista raden.

Syntax

HRESULT MoveLast() throw();

Returvärde

En standard HRESULT.

Anmärkningar

Anropar IRowset::RestartPosition för att flytta platsen för nästa hämtning till den sista positionen och hämtar den sista raden.

Den här metoden kräver att du anger DBPROP_CANSCROLLBACKWARDS till VARIANT_TRUE innan du anropar Open i tabellen eller kommandot som innehåller raduppsättningen. (För bättre prestanda kan du också ställa in DBPROP_QUICKRESTART på VARIANT_TRUE.)

CRowset::MoveNext

Flyttar markören till nästa post.

Syntax

HRESULT MoveNext() throw();

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

Parameterar

lHoppa över
[i] Antalet rader som ska hoppa över innan du hämtar.

bFramåt
[i] Gå true vidare till nästa post false för att gå bakåt.

Returvärde

En standard HRESULT. När slutet av raduppsättningen har nåtts returnerar DB_S_ENDOFROWSET.

Anmärkningar

Hämtar nästa sekventiella rad från CRowset objektet och kommer ihåg den tidigare positionen. Du kan också välja att hoppa över lSkip-rader eller flytta bakåt.

Den här metoden kräver att du anger följande egenskaper innan du anropar Open tabellen eller kommandot som innehåller raduppsättningen:

  • DBPROP_CANSCROLLBACKWARDS måste vara VARIANT_TRUE om lSkip< 0

  • DBPROP_CANFETCHBACKWARDS måste vara VARIANT_TRUE om bForward = false

Annars (om lSkip>= 0 och bForward = true) behöver du inte ange några ytterligare egenskaper.

CRowset::MovePrev

Flyttar markören till föregående post.

Syntax

HRESULT MovePrev() throw();

Returvärde

En standard HRESULT.

Anmärkningar

Den här metoden kräver att du antingen anger DBPROP_CANFETCHBACKWARDS eller DBPROP_CANSCROLLBACKWARDS VARIANT_TRUE innan du anropar Open tabellen eller kommandot som innehåller raduppsättningen.

CRowset::MoveToBookmark

Hämtar raden markerad med ett bokmärke eller raden vid en angiven förskjutning (lSkip) från bokmärket.

Syntax

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

Parameterar

bokmärke
[i] Ett bokmärke som markerar den plats som du vill hämta data från.

lHoppa över
[i] Antalet rader från bokmärket till målraden. Om lSkip är noll är den första raden som hämtas den bokmärkta raden. Om lSkip är 1 är den första raden som hämtas raden efter den bokmärkta raden. Om lSkip är -1 är den första raden som hämtas raden före den bokmärkta raden.

Returvärde

En standard HRESULT.

Anmärkningar

Den här metoden kräver det valfria gränssnittet IRowsetLocate, som kanske inte stöds på alla leverantörer. Om så är fallet returnerar metoden E_NOINTERFACE. Du måste också ange DBPROP_IRowsetLocate till VARIANT_TRUE och ange DBPROP_CANFETCHBACKWARDS till VARIANT_TRUE innan du anropar Open tabellen eller kommandot som innehåller raduppsättningen.

Information om hur du använder bokmärken i konsumenter finns i Använda bokmärken.

CRowset::MoveToRatio

Hämtar rader som börjar från en bråkposition i raduppsättningen.

Syntax

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

Parameterar

täljare
[i] Täljaren som används för att fastställa den bråktalsposition från vilken data ska hämtas.

nämnare
[i] Nämnaren som används för att fastställa den fraktionella positional som data ska hämtas från.

bFramåt
[i] Anger om du vill flytta framåt eller bakåt. Standardvärdet är framåt.

Returvärde

En standard HRESULT.

Anmärkningar

MoveToRatio hämtar rader enligt ungefär följande formel:

(nNumerator * RowsetSize ) / nDenominator

där RowsetSize är storleken på raduppsättningen, mätt i rader. Exaktheten i den här formeln beror på den specifika providern. Mer information finns i IRowsetScroll::GetRowsAtRatio.

Den här metoden kräver det valfria gränssnittet IRowsetScroll, som kanske inte stöds på alla leverantörer. Om så är fallet returnerar metoden E_NOINTERFACE. Du måste också ange DBPROP_IRowsetScroll till VARIANT_TRUE innan du anropar Open i tabellen eller kommandot som innehåller raduppsättningen.

CRowset::ReleaseRows

Anropar IRowset::ReleaseRows för att frigöra det aktuella radhandtaget.

Syntax

HRESULT ReleaseRows() throw();

Returvärde

En standard HRESULT.

CRowset::SetData

Anger datavärden i en eller flera kolumner i en rad.

Syntax

HRESULT SetData() const throw();

HRESULT SetData(int nAccessor) const throw();

Parameterar

nAccessor
[i] Antalet användare som ska användas för att komma åt data.

Returvärde

En standard HRESULT.

Anmärkningar

För formuläret SetData som inte accepterar några argument används alla åtkomstpunkter för uppdatering. Du anropar SetData vanligtvis för att ange datavärden i kolumner i en rad och anropar sedan Uppdatera för att överföra ändringarna.

Den här metoden kräver det valfria gränssnittet IRowsetChange, som kanske inte stöds på alla leverantörer. Om så är fallet returnerar metoden E_NOINTERFACE. Du måste också ange DBPROP_IRowsetChange till VARIANT_TRUE innan du anropar Open i tabellen eller kommandot som innehåller raduppsättningen.

Inställningsåtgärden kan misslyckas om en eller flera kolumner inte kan skrivas. Ändra markörens karta för att korrigera detta.

CRowset::Ångra

Ångrar ändringar som gjorts i en rad sedan den senaste hämtningen eller uppdateringen.

Syntax

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

Parameterar

pcrows (på engelska)
[ut] En pekare till den plats där Undo returnerar antalet rader som den försökte ångra vid behov.

phrow (på engelska)
[ut] En pekare till den plats där Undo returnerar en matris med referenser till alla rader som den försökte ångra vid behov.

pStatus
[ut] En pekare till platsen där Undo returnerar radstatusvärdet. Ingen status returneras om pStatus är null.

Returvärde

En standard HRESULT.

Anmärkningar

Den här metoden kräver det valfria gränssnittet IRowsetUpdate, som kanske inte stöds på alla leverantörer. Om så är fallet returnerar metoden E_NOINTERFACE. Du måste också ange DBPROP_IRowsetUpdate till VARIANT_TRUE innan du anropar Open i tabellen eller kommandot som innehåller raduppsättningen.

CRowset::Uppdatering

Överför eventuella väntande ändringar som gjorts i den aktuella raden sedan den senaste hämtningen eller Update anropet på den.

Syntax

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

Parameterar

pcrows (på engelska)
[ut] En pekare till den plats där Update returnerar antalet rader som den försökte uppdatera, om det behövs.

phrow (på engelska)
[ut] En pekare till den plats där Update returnerar handtaget för den rad som den försökte uppdatera. Inget handtag returneras om phRow är null.

pStatus
[ut] En pekare till platsen där Update returnerar radstatusvärdet. Ingen status returneras om pStatus är null.

Returvärde

En standard HRESULT.

Anmärkningar

Överför eventuella väntande ändringar som gjorts i den aktuella raden sedan den raden senast hämtades eller uppdaterades (med eller UpdateUpdateAll). Du anropar vanligtvis SetData för att ange datavärden i kolumner i en rad och anropar Update sedan för att överföra ändringarna.

Den här metoden kräver det valfria gränssnittet IRowsetUpdate, som kanske inte stöds på alla leverantörer. Om så är fallet returnerar metoden E_NOINTERFACE. Du måste också ange DBPROP_IRowsetUpdate till VARIANT_TRUE innan du anropar Open i tabellen eller kommandot som innehåller raduppsättningen.

CRowset::UpdateAll

Överför eventuella väntande ändringar som gjorts i alla rader sedan den senaste hämtningen eller Update anropet på den.

Syntax

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

Parameterar

pcrows (på engelska)
[ut] En pekare till den plats där UpdateAll returnerar antalet rader som den försökte uppdatera, om det behövs.

pphrow
[ut] En pekare till minnet där UpdateAll returnerar handtaget för den rad som den försökte uppdatera. Inget handtag returneras om pphRow är null.

ppStatus
[ut] En pekare till platsen där Update returnerar radstatusvärdet. Ingen status returneras om ppStatus är null.

Anmärkningar

Överför eventuella väntande ändringar som gjorts i alla rader eftersom dessa rader senast hämtades eller uppdaterades med hjälp av Update eller UpdateAll. UpdateAll uppdaterar varje rad som har ändrats, oavsett om du fortfarande har handtaget för dem (se pphRow) eller inte.

Om du till exempel använde Insert för att infoga fem rader i en raduppsättning kan du antingen anropa Update fem gånger eller anropa UpdateAll en gång för att uppdatera dem alla.

Den här metoden kräver det valfria gränssnittet IRowsetUpdate, som kanske inte stöds på alla leverantörer. Om så är fallet returnerar metoden E_NOINTERFACE. Du måste också ange DBPROP_IRowsetUpdate till VARIANT_TRUE innan du anropar Open i tabellen eller kommandot som innehåller raduppsättningen.

Returvärde

En standard HRESULT.

Se även

DBViewer-exempel
MultiRead-exempel
Exempel på MultiRead-attribut
OLE DB-konsumentmallar
Referens för OLE DB-konsumentmallar