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.
Související funkce
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 |
Uvolnění popisovače připojení | funkce SQLFreeConnect |
Viz také
Referenční
soubory hlaviček ODBC