Udostępnij za pośrednictwem


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 SQLDisconnect zwraca SQL_ERROR lub SQL_SUCCESS_WITH_INFO, skojarzona wartość SQLSTATE może zostać uzyskana przez wywołanie SQLGetDiagRec za pomocą SQL_HANDLE_DBC SQL_HANDLE_DBC i ConnectionHandle. W poniższej tabeli wymieniono wartości SQLSTATE, które są często zwracane przez SQLDisconnect i objaśniono poszczególne wartości w kontekście tej funkcji; notacja "(DM)" poprzedza opisy obiektów SQLSTATEs zwróconych przez menedżera sterowników. Kod zwracany skojarzony z każdą wartością SQLSTATE jest SQL_ERROR, chyba że określono inaczej.

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.

Aby uzyskać informacje o Widzieć
Przydzielanie uchwytu funkcji SQLAllocHandle
Nawiązywanie połączenia ze źródłem danych funkcji SQLConnect
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 SQLEndTran
Zwalnianie uchwytu połączenia funkcji SQLFreeConnect

Zobacz też

dokumentacja interfejsu API ODBC
plików nagłówków ODBC