Sdílet prostřednictvím


Načítání datových řádků

Platí na:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytický platformový systém (PDW)SQL databáze v Microsoft Fabric

Stáhnout ovladač OLE DB

Rozhraní IRowset je rozhraní pro základní řádky. Rozhraní IRowset poskytuje metody pro sekvenční načítání řádků, získávání dat z těchto řádků a správu řádků. Spotřebitelé používají metody v IRowset pro všechny základní operace s řádky. To zahrnuje načítání a uvolňování řádků a získávání hodnot sloupců.

Když uživatel získá ukazatel rozhraní na řádkové sadě, prvním krokem je obvykle zjistit schopnosti řádkové sady pomocí metody IRowsetInfo::GetProperties . To vrací informace o rozhraních vystavených sadě řádků a také o schopnostech sady řádků, které se nezobrazují jako samostatná rozhraní, například maximální počet aktivních řádků a počet řádků, které mohou mít současně čekající aktualizace.

Dalším krokem pro spotřebitele je určit charakteristiky, tedy metadata, sloupců v řádkové sadě. K tomu používají metodu IColumnsInfo pro jednoduché sloupcové informace nebo IColumnsRowset pro rozšířené sloupcové informace. Metoda GetColumnInfo vrací následující informace:

  • Počet sloupců ve výsledné množině.

  • Pole struktur DBCOLUMNINFO, jedna na sloupec.

    Pořadí struktur je pořadí, v jakém se sloupce objevují v sadě řádků. Každá struktura DBCOLUMNINFO obsahuje metadata sloupce, jako je název sloupce, pořadí sloupce, maximální možná délka hodnoty ve sloupci, typ dat sloupce, přesnost a délka.

  • Ukazatel na úložiště pro všechny hodnoty řetězců v rámci jednoho alokačního bloku.

Spotřebitel určuje, které sloupce potřebuje, buď z metadat, nebo na základě textového příkazu, který vytvořil sadu řádků. Určuje ordinály potřebných sloupců na základě pořadí sloupcových informací vrácených IColumnsInfo nebo z ordinálů v řádku metadat sloupců vrácených IColumnsRowset.

Rozhraní IColumnsInfo a IColumnsRowset se používají k extrakci informací o sloupcích v sadě řádků. Rozhraní IColumnsInfo vrací omezenou sadu informací, zatímco IColumnsRowset poskytuje všechna metadata.

Poznámka:

Ve verzi SQL Server 7.0 a starších DBCOLUMN_COMPUTEMODE volitelný sloupec metadat vrácený IColumnsInfo::GetColumnsInfo DBSTATUS_S_ISNULL (místo hodnot popisujících, zda je sloupec vypočítán), protože nelze určit, zda je základní sloupec vypočtán.

Ordinály se používají k určení vazby na sloupec. Vazba je struktura, která spojuje prvek konzumentovy struktury s sloupcem. Vazba může svázat datovou hodnotu, délku a stav sloupce.

Sada vazeb se shromáždí do příslušenství. To se vytváří pomocí metody IAccessor::CreateAccessor . Accessor může obsahovat více vazeb, takže data pro více sloupců lze získat nebo nastavit v jednom hovoru. Spotřebitel může vytvořit několik přístupů, které odpovídají různým vzorcům používání v různých částech aplikace. Může vytvářet a uvolňovat accessory, zatímco řádková sada zůstává v platnosti.

Pro načtení řádků z databáze uživatel volá metodu, například IRowset::GetNextRows nebo IRowsetLocate::GetRowsAt. Tyto operace načítání ukládají data řádků ze serveru do řádkového bufferu poskytovatele. Spotřebitel nemá přímý přístup k řádkovému bufferu poskytovatele. Spotřebitel používá IRowset::GetData ke kopírování dat z bufferu poskytovatele do spotřebitelského bufferu a IRowsetChange::SetData ke kopírování změn dat ze spotřebitelského bufferu do bufferu poskytovatele.

Spotřebitel volá metodu GetData a předá handle do řádku, handle do accessoru a ukazatel do bufferu přiděleného spotřebitelem. GetData převádí data a vrací sloupce podle nastavení v vazbách použitých k vytvoření accessoru. Spotřebitel může volat GetData více než jednou pro řádek, přičemž používá různé přístupové moduly a buffery, a proto může získat více kopií stejných dat.

Data ze sloupců s proměnnou délkou lze zpracovávat několika způsoby. Za prvé, takové sloupce lze vázat na konečnou sekci spotřebitelské struktury. To způsobuje zkrácení, když délka dat přesáhne délku bufferu. Spotřebitel může zjistit, že došlo k oříznutí, kontrolou stavu DBSTATUS_S_TRUNCATED. Vrácená délka je vždy skutečná délka v bajtech, takže spotřebitel může také určit, kolik dat bylo zkráceno.

Když spotřebitel dokončí načítání nebo aktualizaci řádků, uvolní je metodou ReleaseRows . Tím se uvolní zdroje z kopie řádků v sadě a vznikne místo pro nové řádky. Spotřebitel pak může opakovat cyklus načítání nebo vytváření řádků a přístupu k datům v nich.

Když uživatel dokončí sadu řádků, zavolá metodu IAccessor::ReleaseAccessor pro uvolnění libovolného accessoru. Volá metodu IUnknown::Release na všech rozhraních zpřístupněných řádkovou sadou, aby uvolnila sadu řádků. Když je sada řádků uvolněna, nutí uvolnění všech zbývajících řádků nebo příslušenství, které může uživatel mít.

V této sekci

Viz také

Sady řádků