Sdílet prostřednictvím


Rukojeti popisovačů

Popisovač je kolekce metadat, která popisují parametry příkazu SQL nebo sloupce sady výsledků, jak je vidět v aplikaci nebo ovladači (označuje se také jako implementace). Popisovač tak může vyplnit některou ze čtyř rolí:

  • Popisovač parametru aplikace (APD). Obsahuje informace o vyrovnávací paměti aplikace vázané na parametry v příkazu SQL, jako jsou jejich adresy, délky a datové typy jazyka C.

  • Popisovač parametru implementace (IPD). Obsahuje informace o parametrech v SQL příkazu, jako jsou jejich datové typy SQL, délky a možnost nulové hodnoty.

  • Popisovač řádku aplikace (ARD). Obsahuje informace o vyrovnávacích pamětích aplikace vázaných na sloupce v sadě výsledků, jako jsou jejich adresy, délky a datové typy jazyka C.

  • Popisovač řádku implementace (IRD). Obsahuje informace o sloupcích v sadě výsledků, například jejich datové typy SQL, délky a nastavitelnost hodnot NULL.

Když je příkaz přiřazen, automaticky se přiřadí čtyři deskriptory (jeden pro každou roli). Označují se jako automaticky přidělené deskriptory a vždy jsou s ním spojovány. Aplikace mohou také přidělit popisovače pomocí SQLAllocHandle. Označují se jako explicitně přidělené deskriptory. Jsou přiděleny ke spojení a mohou být přidruženy k jednomu nebo více prohlášením na tomto spojení, aby plnily roli APD nebo ARD u těchto prohlášení.

Většinu operací v rozhraní ODBC je možné provádět bez explicitního použití popisovačů aplikací. Popisovače však poskytují pohodlnou zkratku pro některé operace. Předpokládejme například, že aplikace chce vložit data ze dvou různých sad vyrovnávacích pamětí. Pokud chcete použít první sadu vyrovnávacích pamětí, opakovaně by volal SQLBindParameter, aby je navázal na parametry v příkazu INSERT, a pak by příkaz spustil. Pokud chcete použít druhou sadu vyrovnávacích pamětí, opakujte tento proces. Případně může nastavit vazby na první sadu vyrovnávacích pamětí v jednom popisovači a druhou sadu vyrovnávacích pamětí v jiném popisovači. Pokud chcete přepínat mezi sadami vazeb, aplikace by jednoduše volala SQLSetStmtAttr a přidružila správný popisovač k příkazu jako APD.

Další informace o popisovači naleznete v tématu Typy popisovačů.