Sdílet prostřednictvím


Funkce SQLDisconnect

shoda
Zavedená verze: Dodržování standardů ODBC 1.0: ISO 92

souhrnu
SQLDisconnect ukončí připojení přidružené ke konkrétnímu popisovači připojení.

Syntax

  
SQLRETURN SQLDisconnect(  
     SQLHDBC     ConnectionHandle);  

Argumenty

ConnectionHandle
[Vstup] Popisovač připojení.

Návraty

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE nebo SQL_STILL_EXECUTING.

Diagnostika

Když sqlDisconnect vrátí SQL_ERROR nebo SQL_SUCCESS_WITH_INFO, může být přidružená hodnota SQLSTATE získána voláním SQLGetDiagRec s HandleType SQL_HANDLE_DBC a popisovačConnectionHandle. Následující tabulka uvádí hodnoty SQLSTATE běžně vrácené SQLDisconnect a vysvětluje každý z nich v kontextu této funkce; notace "(DM)" předchází popisy funkcí SQLSTATEs vrácených správcem ovladačů. Návratový kód přidružený ke každé hodnotě SQLSTATE je SQL_ERROR, pokud není uvedeno jinak.

SQLSTATE Chyba Popis
01000 Obecné upozornění Informační zpráva specifická pro řidiče (Funkce vrátí SQL_SUCCESS_WITH_INFO.)
01002 Chyba odpojení Během odpojení došlo k chybě. Odpojení však proběhlo úspěšně. (Funkce vrátí SQL_SUCCESS_WITH_INFO.)
08003 Připojení není otevřené (DM) Připojení zadané v argumentu ConnectionHandle nebylo otevřeno.
25000 Neplatný stav transakce Došlo k transakci v procesu připojení určeného argumentem ConnectionHandle. Transakce zůstává aktivní.
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á sqlGetDiagRec v *MessageText vyrovnávací paměti popisuje chybu a její příčinu.
HY001 Chyba přidělení paměti Ovladač nemohl přidělit paměť potřebnou k podpoře provádění nebo dokončení funkce.
HY008 Operace byla zrušena. Asynchronní zpracování bylo povoleno pro ConnectionHandle. Funkce byla volána a před dokončením provádění funkce SQLCancelHandle byla volána na ConnectionHandle. Potom byla funkce znovu volána na ConnectionHandle.

Funkce byla volána a před dokončením provádění SQLCancelHandle byla volána na ConnectionHandle z jiného vlákna v aplikaci s více vlákny.
HY010 Chyba posloupnosti funkcí (DM) Byla volána asynchronně spouštěná funkce pro StatementHandle přidružené k ConnectionHandle a stále se spouštěla při volání SQLDisconnect.

(DM) Pro ConnectionHandle byla volána asynchronně spouštěná funkce (ne tato) a při zavolání této funkce se stále spouštěla.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperationsnebo SQLSetPos byl volána pro StatementHandle přidružené k ConnectionHandle a vráceny SQL_NEED_DATA. Tato funkce byla volána před odesláním dat pro všechny parametry provádění dat nebo sloupce.
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.
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.
HYT01 Vypršel časový limit připojení Doba vypršení časového limitu připojení vypršela, než zdroj dat odpověděl na žádost a připojení je stále aktivní. Doba časového limitu připojení je nastavena prostřednictvím SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Ovladač tuto funkci nepodporuje. (DM) Ovladač přidružený k ConnectionHandle funkci nepodporuje.
IM017 Dotazování je zakázané v asynchronním režimu oznámení. Při každém použití modelu oznámení je dotazování zakázané.
IM018 sqlCompleteAsync nebyl volán k dokončení předchozí asynchronní operace na tomto popisovači. Pokud předchozí volání funkce na popisovači vrátí SQL_STILL_EXECUTING a pokud je povolený režim oznámení, SQLCompleteAsync musí být volána v popisovači, aby bylo možné provést následné zpracování a dokončit operaci.

Komentáře

Pokud aplikace volá SQLDisconnect po SQLBrowseConnect vrátí SQL_NEED_DATA a než vrátí jiný návratový kód, ovladač zruší proces procházení připojení a vrátí připojení k nepřipojeném stavu.

Pokud aplikace volá SQLDisconnect zatímco existuje neúplná transakce přidružená k popisovači připojení, ovladač vrátí SQLSTATE 25000 (neplatný stav transakce), který označuje, že transakce je beze změny a připojení je otevřené. Neúplná transakce je jedna, která nebyla potvrzena nebo vrácena zpět s SQLEndTran.

Pokud aplikace volá SQLDisconnect předtím, než uvolní všechny příkazy přidružené k připojení, ovladač po úspěšném odpojení od zdroje dat uvolní tyto příkazy a všechny popisovače, které byly explicitně přiděleny v připojení. Pokud se však jeden nebo více příkazů přidružených k připojení stále spouští asynchronně, SQLDisconnect vrátí SQL_ERROR s hodnotou SQLSTATE HY010 (chyba pořadí funkcí). Také SQLDisconnect uvolní všechny přidružené příkazy a všechny popisovače, které byly explicitně přiděleny v připojení, pokud je připojení v pozastaveném stavu nebo pokud SQLDisconnect úspěšně zrušil SQLCancelHandle.

Informace o tom, jak aplikace používá sqlDisconnect, naleznete v tématu Odpojení od zdroje dat nebo ovladače.

Odpojení od připojení ve fondu

Pokud je pro sdílené prostředí povolené sdružování připojení a aplikace volá SQLDisconnect připojení v daném prostředí, připojení se vrátí do fondu připojení a je stále k dispozici pro ostatní komponenty používající stejné sdílené prostředí.

Příklad kódu

Viz Sample ODBC Program, SQLBrowseConnect Functiona SQLConnect Function.

Informace o Vidět
Přidělení úchytu funkce SQLAllocHandle
Připojení ke zdroji dat funkce SQLConnect
Připojení ke zdroji dat pomocí připojovacího řetězce nebo dialogového okna funkce SQLDriverConnect
Provedení operace potvrzení nebo vrácení zpět funkce SQLEndTran
Uvolnění popisovače připojení funkce SQLFreeConnect

Viz také

Referenční rozhraní ODBC API
soubory hlaviček ODBC