Megosztás:


Sorok beolvasása

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

OLE DB-illesztő letöltése

Az IRowset interfésze az alap sorhalmaz interfésze. Az IRowset interfész módszereket kínál a sorok sorok sorok lekérésére, az adatok megszerzésére és a sorok kezelésére. A fogyasztók az IRowset módszereit használják minden alapvető sorhalmaz művelethez. Ez magában foglalja a sorok lekérését és kibontaját, valamint az oszlopértékek megszerzését.

Amikor egy felhasználó interfész mutatót szerez egy sorhalmazon, az első lépés általában a sorhalmaz képességei meghatározása az IRowsetInfo::GetProperties metódus segítségével. Ez információkat ad vissza a sorhalmaz által kitett interfészekről, valamint a sorhalmaz képességeiről, amelyek nem jelennek meg különálló interfészként, például a maximális aktív sor száma és a sorok száma, amelyeknek egyszerre lehetnek folyamatban lévő frissítések.

A következő lépés a fogyasztók számára, hogy meghatározzák a sorhalmaz oszlopainak jellemzőit, vagyis metaadatait. Ehhez az IColumnsInfo módszert használják egyszerű oszlopinformációhoz, vagy az IColumnsRowset módszert a kiterjesztett oszlopinformációhoz. A GetColumnInfo metódus a következő információkat adja vissza:

  • Az eredményhalmazban lévő oszlopok száma.

  • Egy DBCOLUMNINFO struktúrák tömbje, egy oszloponként.

    A struktúrák sorrendje az, hogy az oszlopok sorhalmazban megjelennek. Minden DBCOLUMNINFO struktúra tartalmaz oszlopmetaadatokat, például az oszlop nevét, az oszlop ordináljait, az oszlop értékének maximális lehetséges hosszát, az oszlop adattípusát, a pontosságot és a hosszát.

  • Az összes string érték tárolójának intotja egyetlen allocation blokkban.

A fogyasztó dönti el, hogy mely oszlopokra van szüksége vagy a metaadatból, vagy a sorhalmazt generáló szövegparancs alapján. A szükséges oszlopok ordinálisait az IColumnsInfo által visszaküldött oszlopinformációk sorrendjéből vagy az IColumnsRowset által visszaadott oszlopmetaadat sorhalmazban lévő sorrendekből határozza meg.

Az IColumnsInfo és IColumnsRowset interfészek segítségével információkat nyernek ki a sorhalmaz oszlopairól. Az IColumnsInfo interfész korlátozott mennyiségű információt ad vissza, míg az IColumnsRowset minden metaadatot biztosít.

Megjegyzés:

Az SQL Server 7.0 és korábbi verzióban az opcionális metaadat-oszlopot IColumnsInfo::GetColumnsInfo DBCOLUMN_COMPUTEMODE visszaadja DBSTATUS_S_ISNULL(nem pedig az oszlop kiszámítását leíró értékek), mert nem lehet meghatározni, hogy az alapul szolgáló oszlop kiszámított-e.

Az ordinálisokat arra használják, hogy meghatározzák az oszlophoz kötött kötést. A kötés olyan szerkezet, amely a fogyasztó szerkezetének egy elemét egy oszlophoz köti. A kötés kötheti az oszlop adatértékét, hosszát és állapotértékét.

Egy kötelékkészlet egy kiegészítőben van összegyűjtve. Ezt az IAccessor::CreateAccessor módszerrel hozzuk létre. Egy accessor több kötést is tartalmazhat, így több oszlop adatai egyetlen hívásban lehessen lekérni vagy beállítani. A fogyasztó több kiegészítő is létrehozhat, hogy illeszkedjen az alkalmazás különböző részein eltérő használati mintákhoz. Létrehozhat és kiengedheti a kiegészítőket, amíg a sorkészlet létezik.

Az adatbázisból sorok lekéréséhez a felhasználó egy metódusot hív, például IRowset::GetNextRows vagy IRowsetLocate::GetRowsAt. Ezek a fetch műveletek a szerverről származó soradatokat a szolgáltató sorpufferébe helyezik. A fogyasztónak nincs közvetlen hozzáférése a szolgáltató sorpufferéhez. A fogyasztó IRowset::GetData segítségével másolja az adatokat a szolgáltató pufferéből a fogyasztói pufferbe, míg IRowsetChange::SetData segítségével az adatokat a fogyasztói pufferből a szolgáltató pufferébe másolja.

A fogyasztó meghívja a GetData metódust, és átadja a fogantyút egy sornak, a handle-t egy accessornak, egy mutatót pedig egy fogyasztó által kijelölt pufferhez. A GetData átalakítja az adatokat, és visszaadja az oszlopokat, ahogy az a kiegészítőt létrehozó kötésekben megadták. A fogyasztó több mint egyszer hívhatja a GetData-t egy sorban, különböző hozzáférési eszközökkel és pufferekkel, így a felhasználó több példányt is megszerezhet ugyanarról az adatról.

A változó hosszúságú oszlopok adatait többféleképpen is kezelhetjük. Először is, az ilyen oszlopok a fogyasztó szerkezetének véges szakaszához köthetők. Ez akkor okoz csonkodást, ha az adatok hossza meghaladja a puffer hosszát. A fogyasztó megállapíthatja, hogy a levágás történt, ha ellenőrzi a DBSTATUS_S_TRUNCATED státuszt. A visszaadott hossz mindig a valódi hossz bájtokban, így a fogyasztó azt is meghatározhatja, mennyi adatot vágtak le.

Amikor a fogyasztó befejezte a sorok lekérését vagy frissítését, a ReleaseRows módszerrel szabadítja fel azokat. Ez felszabadítja az erőforrásokat a sorok másolatából a sorkészletben, és helyet teremt új soroknak. A fogyasztó ezután megismételheti a sorok keresését vagy létrehozását, valamint hozzáférhet az adatokhoz.

Amikor a fogyasztó befejezte a sorhalmazt, az IAccessor::ReleaseAccessor metódusát hívja, hogy bármelyik accessort felszabadítsa. Az IUnknown::Release metóduszot minden interfésen, amelyet a sorhalmaz által kitárt, hogy felszabadítsa a sorhalmazt. Amikor a sorkészlet felszabadul, az arra kényszeríti, hogy a fogyasztó által elbírható maradék sorokat vagy kiegészítőket engedje fel.

Ebben a részben

Lásd még:

Sorhalmazok