Podrobnosti o implementaci rozhraní ODBC API

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed Instanceazure Synapse Analytics

Open Database Connectivity (ODBC) je rozhraní API Microsoft Win32, které aplikacím umožňuje přístup k datům ve zdrojích dat kompatibilních s rozhraním ODBC. Tento článek vysvětluje, jak rozhraní ODBC zpracovává volání funkcí, spravuje popisovače, komunikuje s ovladači a poskytuje diagnostiku. Poskytuje vývojářům jasnější přehled o tom, jak rozhraní ODBC funguje mezi aplikacemi, správcem ovladačů a databázovými ovladači.

Referenční informace o ovladači ODBC nativního klienta SQL Serveru nekomentuje každou funkci ODBC. Dokumentuje pouze tyto funkce s parametry nebo chování jedinečnými pro ovladač ODBC nativního klienta SQL Serveru.

Ovladač ODBC nativního klienta SQL Serveru odpovídá specifikaci ODBC 3.51. Pokud chcete získat úplný referenční materiál, stáhněte si sadu Microsoft Data Access Components SDK z Centra pro vývojáře dat a úložiště nebo si prohlédněte referenční informace programátora ODBC.

Jak funguje rozhraní API ODBC

Rozhraní ODBC poskytuje standardizované rozhraní mezi aplikacemi a databázovými ovladači. Když aplikace volá funkci ODBC, volání před dosažením zdroje dat prochází několika vrstvami. Porozumění této architektuře vám pomůže psát efektivnější kód a řešit potíže s připojením.

Model popisovače ODBC

Odbc ke správě stavu používá čtyři hierarchické typy popisovačů:

Typ úchytu Účel
Prostředí (HENV) Globální nastavení a správa verzí ROZHRANÍ ODBC
Připojení (HDBC) Představuje připojení ke konkrétnímu zdroji dat.
Příkaz (HSTMT) Spravuje příkazy, parametry a sady výsledků SQL.
Popisovač (HDESC) Ukládá metadata pro parametry a sloupce.

Manažer a interakce mezi ovladači a jezdci

  1. Aplikace provádí volání rozhraní ODBC API.
  2. Správce ovladačů ověří parametry a odešle volání.
  3. Ovladač komunikuje se zdrojem dat.
  4. Výsledky se přetékají zpět přes Správce ovladačů do aplikace.

Životní cyklus volání funkce

  1. Přidělení popisovačů
  2. Nastavte atributy prostředí nebo připojení.
  3. Připojte se ke zdroji dat.
  4. Připravte nebo spusťte příkazy SQL.
  5. Vytvoření vazby parametrů nebo výsledných sloupců
  6. Načtení řádků
  7. Volné úchyty.

Diagnostika a řešení chyb

Použijte následující diagnostické funkce:

  • SQLGetDiagRec
  • SQLGetDiagField

Diagnostika se může vztahovat na obslužné rutiny prostředí, připojení nebo příkazů.

Unicode vs. volání ANSI

ROZHRANÍ ODBC poskytuje dva typy funkcí:

  • Funkce ANSI jako SQLExecDirectA
  • Funkce Unicode jako SQLExecDirectW

Pro moderní aplikace používejte rozhraní API unicode.

Dělení na vlákna a sdružování

  • Bezpečnost vláken závisí na tom, jak aplikace konfiguruje ovladač a správce ovladačů.
  • Pokud chcete snížit režijní náklady na připojení, povolte sdružování připojení na obou úrovních.

Referenční informace k rozhraní API ODBC

Následující části seskupují funkce rozhraní ODBC API podle úlohy. Každá položka odkazuje na podrobnou referenční stránku pro ovladač nativního klienta SYSTÉMU SQL Server.

Připojení a zdroj dat

Pomocí těchto funkcí můžete vytvářet, konfigurovat a spravovat připojení k SQL Serveru.

Funkce Description
Sqlconnect Vytvoření připojení ke zdroji dat pomocí DSN, ID uživatele a hesla
Sqldriverconnect Připojení pomocí připojovacího řetězce s klíčovými slovy specifických pro ovladače
Sqlbrowseconnect Interaktivní zjišťování atributů připojení k sestavení připojovacího řetězce
SQLConfigDataSource Programové vytváření, úpravy nebo odstraňování názvů zdrojů dat
SQLDrivers Výpis všech nainstalovaných ovladačů ODBC a jejich atributů
SQLGetConnectAttr Načtení aktuální hodnoty atributu připojení
SQLSetConnectAttr Konfigurace chování připojení, jako jsou vypršení časového limitu a izolace transakcí

Spouštění příkazů SQL

Tyto funkce slouží k přípravě, spouštění a správě příkazů SQL.

Funkce Description
Sqlexecdirect Okamžité spuštění příkazu SQL bez přípravy
Sqlexecute Provedení dříve připraveného příkazu SQL
SQLCancel Zrušení provádění probíhajícího příkazu
SQLNativeSql Překlad syntaxe ODBC SQL do nativního dialektu SQL ovladače
Sqlendtran Potvrzení nebo vrácení transakce v připojení nebo prostředí

Vytvoření vazby parametrů a sloupců

Pomocí těchto funkcí můžete svázat proměnné aplikace s parametry SQL a sloupci sady výsledků.

Funkce Description
Sqlbindparameter Vytvoření vazby vyrovnávací paměti aplikace na značku parametru příkazu SQL
Sqlbindcol Vytvoření vazby vyrovnávací paměti aplikace ke sloupci sady výsledků
Sqlparamdata Získání dalšího parametru, který potřebuje data během operací provádění dat
Sqlputdata Odesílání dat parametrů v blocích během provádění příkazu
Sqldescribeparam Načtení datového typu a velikosti značky parametru
SQLNumParams Počet parametrů v připraveném příkazu

Načtení a zpracování výsledků

Tyto funkce slouží k načtení dat ze sad výsledků a zpracování výsledků dotazu.

Funkce Description
SqlFetch Načtení další sady řádků dat a vrácení hodnot vázaného sloupce
Sqlfetchscroll Načtení sady řádků na absolutní nebo relativní pozici v sadě výsledků
Sqlgetdata Načtení dat pro jeden nevázaný sloupec nebo velká data v blocích
Sqlmoreresults Přechod na další sadu výsledků, když příkaz vrátí více výsledků
SQLRowCount Získejte počet řádků ovlivněných INSERT, UPDATE, nebo DELETE výroky
SQLCloseCursor Zavřete kurzor a zahoďte čekající výsledky.
SQLGetCursorName Načtení názvu přidruženého k kurzoru příkazu

Zjišťování schématu a metadat

Pomocí těchto funkcí můžete dotazovat informace o schématu databáze, jako jsou tabulky, sloupce a klíče.

Funkce Description
Sqltables Výpis tabulek, zobrazení a dalších objektů podobných tabulkám ve zdroji dat
Sqlcolumns Výpis sloupců a jejich atributů pro zadané tabulky
SQLPrimaryKeys Načtení sloupců primárního klíče pro tabulku
SQLForeignKeys Výpis cizích klíčů pro tabulku nebo cizí klíče v jiných tabulkách, které na ni odkazují
Sqlspecialcolumns Identifikace sloupců, které jednoznačně identifikují řádek nebo se automaticky aktualizují
SQLStatistics Načtení informací o indexu a statistiky tabulek
SQLProcedures Výpis uložených procedur dostupných ve zdroji dat
Sqlprocedurecolumns Popis vstupních/výstupních parametrů a výsledných sloupců pro uložené procedury

Metadata sady sloupců a výsledků

Pomocí těchto funkcí můžete prozkoumat strukturu sad výsledků a atributů sloupců.

Funkce Description
SQLDescribeCol Získání názvu sloupce, typu, velikosti a hodnoty null pro sloupec výsledku
Sqlcolattribute Načtení konkrétního atributu sloupce sady výsledků
SQLNumResultCols Počet sloupců v sadě výsledků
Sqlgettypeinfo Výpis datových typů SQL podporovaných zdrojem dat

Oprávnění a zabezpečení

Pomocí těchto funkcí můžete načíst informace o oprávněních pro databázové objekty.

Funkce Description
SQLTablePrivileges Výpis oprávnění udělených pro tabulky ve zdroji dat
SQLColumnPrivileges Oprávnění seznamu udělená pro konkrétní sloupce tabulky

Atributy prostředí a příkazů

Tyto funkce slouží ke konfiguraci chování prostředí ODBC a příkazů.

Funkce Description
SQLSetEnvAttr Nastavení atributů prostředí, jako je verze ODBC a sdružování připojení
SQLGetStmtAttr Načtení aktuální hodnoty atributu příkazu
SQLSetStmtAttr Konfigurace chování příkazů, jako je typ kurzoru a vypršení časového limitu dotazu

Deskriptory

Pomocí těchto funkcí můžete přímo manipulovat se záznamy popisovače pro pokročilé zpracování parametrů a sloupců.

Funkce Description
Sqlgetdescfield Načtení jednoho pole ze záznamu popisovače
SQLSetDescField Nastavení jednoho pole v záznamu popisovače
Sqlsetdescrec Nastavení více polí v záznamu popisovače jedním voláním

Informace o diagnostice a ovladači

Pomocí těchto funkcí můžete načíst informace o chybách a možnosti ovladače dotazů.

Funkce Description
Sqlgetdiagfield Načtení diagnostického pole z prostředí, připojení nebo příkazu
Sqlgetinfo Získání obecných informací o možnostech ovladače a zdroje dat
FUNKCE SQLGetFunctions Určení funkcí ODBC, které ovladač podporuje

Vyčištění prostředků

Tyto funkce slouží k uvolnění prostředků a bezplatných prostředků.

Funkce Description
SQLFreeHandle Uvolnění prostředí, připojení, příkazu nebo popisovače popisovače
Sqlfreestmt Prostředky bezplatného příkazu, zavření kurzorů nebo zrušení vazby parametrů a sloupců