Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Vonatkozik a következőkre:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitikai Platform System (PDW)
SQL adatbázis a Microsoft Fabric-ben
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.