SQLDisconnect, funkcja
zgodności
Wersja wprowadzona: Zgodność ze standardami ODBC 1.0: ISO 92
podsumowania
SQLDisconnect zamyka połączenie skojarzone z określonym dojściem połączenia.
Składnia
SQLRETURN SQLDisconnect(
SQLHDBC ConnectionHandle);
Argumenty
ConnectionHandle
[Dane wejściowe] Uchwyt połączenia.
Zwraca
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE lub SQL_STILL_EXECUTING.
Diagnostyka
Gdy
SQLSTATE | Błąd | Opis |
---|---|---|
01000 | Ostrzeżenie ogólne | Komunikat informacyjny specyficzny dla sterownika. (Funkcja zwraca SQL_SUCCESS_WITH_INFO). |
01002 | Błąd rozłączenia | Wystąpił błąd podczas rozłączania. Jednak rozłączenie zakończyło się pomyślnie. (Funkcja zwraca SQL_SUCCESS_WITH_INFO). |
08003 | Połączenie nie jest otwarte | (DM) Połączenie określone w argumencie ConnectionHandle nie było otwarte. |
25000 | Nieprawidłowy stan transakcji | Wystąpiła transakcja w procesie połączenia określonego przez argument ConnectionHandle. Transakcja pozostaje aktywna. |
HY000 | Błąd ogólny | Wystąpił błąd, dla którego nie było określonego stanu SQLSTATE i dla którego nie zdefiniowano parametru SQLSTATE specyficznego dla implementacji. Komunikat o błędzie zwrócony przez SQLGetDiagRec w buforze *MessageText opisuje błąd i jego przyczynę. |
HY001 | Błąd alokacji pamięci | Sterownik nie może przydzielić pamięci wymaganej do obsługi wykonywania lub ukończenia funkcji. |
HY008 | Operacja anulowana | Przetwarzanie asynchroniczne zostało włączone dla ConnectionHandle. Wywołano funkcję , a przed zakończeniem wykonywania funkcji SQLCancelHandle została wywołana ConnectionHandle. Następnie funkcja została ponownie wywołana w ConnectionHandle. Wywołano funkcję i przed zakończeniem wykonywania SQLCancelHandle została wywołana w ConnectionHandle z innego wątku w aplikacji wielowątku. |
HY010 | Błąd sekwencji funkcji | (DM) Asynchronicznie wykonywana funkcja została wywołana dla StatementHandle skojarzonej z ConnectionHandle i była nadal wykonywana podczas wywoływania SQLDisconnect. (DM) Asynchronicznie wykonywana funkcja (a nie ta) została wywołana dla ConnectionHandle i nadal była wykonywana, gdy ta funkcja została wywołana. (DM) SQLExecute, SQLExecDirect, SQLBulkOperationslub SQLSetPos został wywołany StatementHandle skojarzony z ConnectionHandle i zwrócony SQL_NEED_DATA. Ta funkcja została wywołana przed wysłaniem danych dla wszystkich parametrów wykonywania danych lub kolumn. |
HY013 | Błąd zarządzania pamięcią | Nie można przetworzyć wywołania funkcji, ponieważ nie można uzyskać dostępu do bazowych obiektów pamięci, prawdopodobnie z powodu niskich warunków pamięci. |
HY117 | Połączenie jest zawieszone z powodu nieznanego stanu transakcji. Dozwolone są tylko funkcje rozłączania i tylko do odczytu. | (DM) Aby uzyskać więcej informacji na temat stanu wstrzymania, zobacz funkcja SQLEndTran. |
HYT01 | Upłynął limit czasu połączenia | Okres przekroczenia limitu czasu połączenia wygasł, zanim źródło danych odpowiedziało na żądanie, a połączenie jest nadal aktywne. Limit czasu połączenia jest ustawiany za pomocą SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 | Sterownik nie obsługuje tej funkcji | (DM) Sterownik skojarzony z ConnectionHandle nie obsługuje funkcji. |
IM017 | Sondowanie jest wyłączone w trybie powiadomień asynchronicznych | Za każdym razem, gdy jest używany model powiadomień, sondowanie jest wyłączone. |
IM018 | sqlCompleteAsync nie została wywołana w celu ukończenia poprzedniej operacji asynchronicznej na tym dojściu. | Jeśli poprzednie wywołanie funkcji na dojściu zwraca SQL_STILL_EXECUTING i jeśli tryb powiadomień jest włączony, SQLCompleteAsync należy wywołać do dojścia, aby wykonać przetwarzanie końcowe i zakończyć operację. |
Komentarze
Jeśli aplikacja wywołuje SQLDisconnect po SQLBrowseConnect zwraca SQL_NEED_DATA i przed zwróceniem innego kodu powrotnego sterownik anuluje proces przeglądania połączenia i zwraca połączenie z niepodłączonego stanu.
Jeśli aplikacja wywołuje SQLDisconnect, gdy istnieje niekompletna transakcja skojarzona z dojściem połączenia, sterownik zwraca wartość SQLSTATE 25000 (nieprawidłowy stan transakcji), co oznacza, że transakcja pozostaje niezmieniona, a połączenie jest otwarte. Niekompletna transakcja to transakcja, która nie została zatwierdzona lub wycofana z SQLEndTran.
Jeśli aplikacja wywołuje SQLDisconnect przed zwolnieniem wszystkich instrukcji skojarzonych z połączeniem, sterownik po pomyślnym rozłączeniu ze źródłem danych zwalnia te instrukcje i wszystkie deskryptory, które zostały jawnie przydzielone w połączeniu. Jeśli jednak co najmniej jedna instrukcja skojarzona z połączeniem nadal wykonuje asynchronicznie, sqlDisconnect zwraca SQL_ERROR z wartością HY010 (błąd sekwencji funkcji). Ponadto sqlDisconnect zwolni wszystkie skojarzone instrukcje i wszystkie deskryptory, które zostały jawnie przydzielone w połączeniu, jeśli połączenie jest w stanie wstrzymania lub jeśli SQLDisconnect został pomyślnie anulowany przez SQLCancelHandle.
Aby uzyskać informacje o tym, jak aplikacja używa sqlDisconnect, zobacz Odłączanie od źródła danych lub sterownika.
Odłączanie od połączenia w puli
Jeśli buforowanie połączeń jest włączone dla środowiska udostępnionego, a aplikacja wywołuje SQLDisconnect w połączeniu w tym środowisku, połączenie jest zwracane do puli połączeń i jest nadal dostępne dla innych składników przy użyciu tego samego środowiska udostępnionego.
Przykład kodu
Zobacz Przykładowy program ODBC, funkcji SQLBrowseConnecti funkcji SQLConnect.
Powiązane funkcje
Aby uzyskać informacje o | Widzieć |
---|---|
Przydzielanie uchwytu | funkcji SQLAllocHandle |
Nawiązywanie połączenia ze źródłem danych | funkcji |
Nawiązywanie połączenia ze źródłem danych przy użyciu parametrów połączenia lub okna dialogowego | funkcji SQLDriverConnect |
Wykonywanie operacji zatwierdzania lub wycofywania | funkcji |
Zwalnianie uchwytu połączenia | funkcji SQLFreeConnect |
Zobacz też
dokumentacja interfejsu API ODBC
plików nagłówków ODBC