Funkce SQLDrivers

Soulad
Představená verze: ODBC 2.0 Shoda standardů: ODBC

Summary
SQLDrivers uvádí popisy ovladačů a klíčová slova atributů ovladačů. Tato funkce je implementována pouze Správcem ovladačů.

Syntax

  
SQLRETURN SQLDrivers(  
     SQLHENV         EnvironmentHandle,  
     SQLUSMALLINT    Direction,  
     SQLCHAR *       DriverDescription,  
     SQLSMALLINT     BufferLength1,  
     SQLSMALLINT *   DescriptionLengthPtr,  
     SQLCHAR *       DriverAttributes,  
     SQLSMALLINT     BufferLength2,  
     SQLSMALLINT *   AttributesLengthPtr);  

Arguments

EnvironmentHandle
[Vstup] Ovládání prostředí.

Směr
[Vstup] Určuje, zda správce ovladačů načte další popis ovladače v seznamu (SQL_FETCH_NEXT), nebo zda vyhledávání začíná od začátku seznamu (SQL_FETCH_FIRST).

Popis ovladače
[Výstup] Ukazatel na buffer, do kterého se vrací popis ovladače.

Pokud je DriverDescription NULL, DescriptionLengthPtr stále vrátí celkový počet znaků (kromě znaku null-termination pro data znaku), které lze vrátit v bufferu na který ukazuje DriverDescription.

BufferLength1
[Vstup] Délka bufferu *DriverDescription , v znacích.

DescriptionLengthPtr
[Výstup] Ukazatel na buffer, do kterého se vrátí celkový počet znaků (bez znaku nulového ukončení), které lze vrátit v *DriverDescription. Pokud je počet znaků dostupných k vrácení větší nebo roven BufferLength1, popis ovladače v *DriverDescription je zkrácen na BufferLength1 minus délka znaku null-termination.

DriverAttributes
[Výstup] Ukazatel na buffer, do kterého se vrací seznam dvojic hodnot atributů ovladače (viz "Komentáře").

Pokud je DriverAttributes NULL, AttributesLengthPtr stále vrátí celkový počet bajtů (bez znaku null-termination pro data znaku), které lze vrátit v bufferu na který ukazuje DriverAttributes.

BufferLength2
[Vstup] Délka bufferu *DriverAttributes , ve znacích. Pokud je hodnota *DriverDescription Unicode řetězec (při volání SQLDriversW), argument BufferLength musí být sudé číslo.

AtributyDélkaPtr
[Výstup] Ukazatel na buffer, do kterého lze vrátit celkový počet bajtů (bez null-termination bajtu), které lze vrátit v *DriverAttributes. Pokud je počet bajtů dostupných k vrácení větší nebo roven BufferLength2, seznam párů hodnot atributů v *DriverAttributes se zkrátí na BufferLength2 minus délka znaku null-terminace.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_ERROR nebo SQL_INVALID_HANDLE.

Diagnostika

Když SQLDrivers vrací buď SQL_ERROR nebo SQL_SUCCESS_WITH_INFO, lze získat přidruženou hodnotu SQLstate, pokud se vyvolá SQLGetDiagRec s HandleType SQL_HANDLE_ENV a HandlemEnvironmentHandle. Následující tabulka uvádí hodnoty SQLSTATE, které SQLDrivers obvykle vrací, a vysvětluje každou z nich v kontextu této funkce; notace "(DM)" předchází popisům SQLstavů vráceným Správcem ovladačů. Návratový kód přidružený ke každé hodnotě SQLSTATE je SQL_ERROR, pokud není uvedeno jinak.

SQLSTATE Error Description
01000 Obecné upozornění (DM) Informační zpráva specifická pro Driver Manager. (Funkce vrátí SQL_SUCCESS_WITH_INFO.)
01004 Řetězcová data, zkrácená vpravo (DM) Buffer *Driver Description nebyl dostatečně velký pro vrácení kompletního popisu ovladače. Proto byl popis zkrácen. Délka kompletního popisu ovladače se vrací v *DescriptionLengthPtr. (Funkce vrátí SQL_SUCCESS_WITH_INFO.)

(DM) Buffer *DriverAttributes nebyl dostatečně velký na to, aby vrátil kompletní seznam párů hodnot atributů. Proto byl seznam zkrácen. Délka nekráceného seznamu dvojic hodnot atributů se vrací v *AttributesLengthPtr. (Funkce vrátí SQL_SUCCESS_WITH_INFO.)
HY000 Obecná chyba Došlo k chybě, pro kterou nebyla definována žádná specifická funkce SQLSTATE a pro kterou nebyla definována žádná implementace sqlSTATE. Chybová zpráva vrácená nástrojem SQLGetDiagRec v vyrovnávací paměti *MessageText popisuje chybu a její příčinu.
HY001 Chyba přidělení paměti (DM) Správce ovladačů nebyl schopen přidělit paměť potřebnou k podpoře provádění nebo dokončení funkce.
HY010 Chyba posloupnosti funkcí (DM) SQLExecute, SQLExecDirect nebo SQLMoreResults byl volána pro StatementHandle a vrácena SQL_PARAM_DATA_AVAILABLE. Tato funkce byla volána před načtením dat pro všechny streamované parametry.
HY013 Chyba správy paměti Volání funkce nelze zpracovat, protože základní objekty paměti nelze získat přístup, pravděpodobně kvůli nedostatku paměti.
HY090 Neplatná délka řetězce nebo vyrovnávací paměti (DM) Hodnota zadaná pro argument BufferLength1 byla menší než 0.

(DM) Hodnota zadaná pro argument BufferLength2 byla menší než 0 nebo rovna 1.
HY103 Neplatný kód pro získání (DM) Hodnota určená pro argument Direction nebyla rovna SQL_FETCH_FIRST ani SQL_FETCH_NEXT.
HY117 Připojení je pozastaveno kvůli neznámému stavu transakce. Jsou povoleny pouze funkce pro odpojení a jen pro čtení. (DM) Další informace o pozastaveném stavu naleznete v tématu FUNKCE SQLEndTran.

Comments

SQLDrivers vrací popis ovladače v bufferu *DriverDescription . Vrací další informace o ovladači v bufferu *DriverAttributes jako seznam párů klíč-hodnota. Všechna klíčová slova uvedená v systémových informacích pro ovladače budou vrácena pro všechny ovladače, kromě CreateDSN, který slouží k podnětání vytváření datových zdrojů a je tedy volitelný. Každý pár končí nulovým bajtem a kompletní seznam končí nulovým bajtem (tedy dva nulové bajty označují konec seznamu). Například ovladač založený na souborech používající syntaxi v C může vrátit následující seznam atributů ("\0" představuje nulový znak):

FileUsage=1\0FileExtns=*.dbf\0\0  

Pokud *DriverAttributes není dostatečně velký pro uložení celého seznamu, seznam se zkrátí, SQLDrivers vrátí SQLSTATE 01004 (Data zkráceno) a délka seznamu (bez posledního null-termination bajtu) se vrátí v *AttributesLengthPtr.

Klíčová slova atributů ovladačů se přidávají ze systémových informací při instalaci ovladače. Pro více informací viz Instalace komponent ODBC.

Aplikace může SQLDrivers volat vícekrát, aby získala všechny popisy ovladačů. Driver Manager získává tyto informace ze systémových informací. Když už nejsou žádné další popisy ovladačů, SQLDrivers SQL_NO_DATA vrátí. Pokud je SQLDrivers volán s SQL_FETCH_NEXT ihned po návratu SQL_NO_DATA, vrátí první popis ovladače. Pro informace o tom, jak aplikace využívá informace vrácené SQLDrivers, viz Výběr zdroje dat nebo ovladače.

Pokud je SQL_FETCH_NEXT předán SQLDrivers při prvním volání, SQLDrivers vrátí první název datového zdroje.

Protože je SQLDrivers implementován ve Správci ovladačů, je podporován pro všechny ovladače bez ohledu na dodržování standardů konkrétního ovladače.

Informace o Podívejte se
Objevování a zaznamenání hodnot potřebných k připojení ke zdroji dat Funkce SQLBrowseConnect
Připojení ke zdroji dat Funkce SQLConnect
Vracení názvů zdrojů dat Funkce SQLDataSources
Připojení ke zdroji dat pomocí připojovací řetězec nebo dialogového okna FUNKCE SQLDriverConnect