Przejścia połączeń
Połączenia ODBC mają następujące stany.
Stan | Opis |
---|---|
C0 | Nieprzydzielone środowisko, nieprzydzielone połączenie |
C1 | Przydzielone środowisko, nieprzydzielone połączenie |
C2 | Przydzielone środowisko, przydzielone połączenie |
C3 | Funkcja połączenia wymaga danych |
C4 | Połączenie połączone |
C5 | Połączenie połączone, instrukcja przydzielona |
C6 | Połączenie połączone, transakcja w toku. Istnieje możliwość, aby połączenie było w stanie C6 bez instrukcji przydzielonych w połączeniu. Załóżmy na przykład, że połączenie jest w trybie zatwierdzania ręcznego i jest w stanie C4. Jeśli instrukcja jest przydzielana, wykonywana (uruchamianie transakcji), a następnie zwolniona, transakcja pozostaje aktywna, ale nie ma żadnych instrukcji w połączeniu. |
W poniższych tabelach pokazano, jak każda funkcja ODBC wpływa na stan połączenia.
SQLAllocHandle
C0 Nie env. |
C1 Nieprzydzielone | C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
C1[1] | --[5] | --[5] | --[5] | --[5] | --[5] | --[5] |
(IH)[2] | C2 | --[5] | --[5] | --[5] | --[5] | --[5] |
(IH)[3] | (IH) | (08003) | (08003) | C5 | --[5] | --[5] |
(IH)[4] | (IH) | (08003) | (08003) | --[5] | --[5] | --[5] |
[1] Ten wiersz pokazuje przejścia, gdy
[2] Ten wiersz pokazuje przejścia, gdy HandleType został SQL_HANDLE_DBC.
[3] Ten wiersz pokazuje przejścia, gdy
[4] Ten wiersz pokazuje przejścia, gdy
[5] Wywoływanie SQLAllocHandle za pomocą OutputHandlePtr wskazującą prawidłową obsługę, która obsługuje bez względu na poprzednią zawartość tego uchwytu, i może powodować problemy ze sterownikami ODBC. Niepoprawne programowanie aplikacji ODBC w celu wywołania SQLAllocHandle dwa razy z tą samą zmienną aplikacji zdefiniowaną dla *OutputHandlePtr bez wywoływania SQLFreeHandle, aby zwolnić dojście przed jej przeniesieniem. Zastępowanie dojść ODBC w taki sposób może prowadzić do niespójnego zachowania lub błędów ze strony sterowników ODBC.
SQLBrowseConnect
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH) | (IH) | C3 [d] C4 [s] | -- [d] C2 [e] C4 [s] | (08002) | (08002) | (08002) |
SQLCloseCursor
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | -- | --[1] C5[2] |
[1] Połączenie było w trybie zatwierdzania ręcznego.
[2] Połączenie było w trybie automatycznego zatwierdzania.
SQLColumnPrivileges, SQLColumns, SQLForeignKeys, SQLGetTypeInfo, SQLPrimaryKeys, SQLProcedureColumns, SQLProcedures, SQLSpecialColumns, SQLStatistics, SQLTablePrivileges i SQLTables
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | -- |
[1] Połączenie było w trybie automatycznego zatwierdzania lub źródło danych nie rozpoczęło transakcji.
[2] Połączenie było w trybie zatwierdzania ręcznego, a źródło danych rozpoczęło transakcję.
SQLConnect
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH) | (IH) | C4 | (08002) | (08002) | (08002) | (08002) |
SQLCopyDesc, SQLGetDescField, SQLGetDescRec, SQLSetDescField i SQLSetDescRec
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | --[1] | -- | -- |
[1] W tym stanie jedyne deskryptory dostępne dla aplikacji są jawnie przydzielane deskryptorom.
SQLDataSources i SQLDrivers
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH) | -- | -- | -- | -- | -- | -- |
SQLDisconnect
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH) | (IH) | (08003) | C2 | C2 | C2 | 25000 |
SQLDriverConnect
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH) | (IH) | C4 s - n[f] | (08002) | (08002) | (08002) | (08002) |
SQLEndTran
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH)[1] | --[3] | --[3] | --[3] | -- | -- | --[4] lub ([5], [6] i [8]) C4[5] i [7] C5[5], [6] i [9] |
(IH)[2] | (IH) | (08003) | (08003) | -- | -- | C5 |
[1] Ten wiersz pokazuje przejścia, gdy
[2] Ten wiersz pokazuje przejścia, gdy HandleType został SQL_HANDLE_DBC.
[3] Ponieważ połączenie nie jest w stanie połączenia, nie ma to wpływu na transakcję.
[4] Zatwierdzenie lub wycofywanie nie powiodło się w połączeniu. Funkcja zwraca SQL_ERROR w tym przypadku.
[5] Zatwierdzenie lub wycofanie zakończyło się pomyślnie w połączeniu. Funkcja zwraca SQL_ERROR, jeśli zatwierdzenie lub wycofanie nie powiodło się w innym połączeniu, lub funkcja zwraca SQL_SUCCESS, jeśli zatwierdzenie lub wycofanie zakończyło się pomyślnie na wszystkich połączeniach.
[6] W połączeniu przydzielono co najmniej jedną instrukcję.
[7] W połączeniu nie przydzielono żadnych instrukcji.
[8] Połączenie miało co najmniej jedną instrukcję, dla której był otwarty kursor, a źródło danych zachowuje kursory, gdy transakcje są zatwierdzane lub cofane, w zależności od tego, czy CompletionType był SQL_COMMIT, czy SQL_ROLLBACK). Aby uzyskać więcej informacji, zobacz atrybuty SQL_CURSOR_COMMIT_BEHAVIOR i SQL_CURSOR_ROLLBACK_BEHAVIOR w SQLGetInfo.
[9] Jeśli połączenie miało jakiekolwiek instrukcje, dla których były otwarte kursory, kursory nie były zachowywane, gdy transakcja została zatwierdzona lub wycofana.
SQLExecDirect i SQLExecute
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] C6[3] | -- |
[1] Połączenie było w trybie automatycznego zatwierdzania, a instrukcja wykonana nie była kursoremspecyfikacji (na przykład instrukcja SELECT); lub połączenie było w trybie zatwierdzania ręcznego, a instrukcja wykonana nie rozpoczęła transakcji.
[2] Połączenie było w trybie automatycznego zatwierdzania, a instrukcja wykonana była kursoremspecyfikacji (na przykład instrukcja SELECT).
[3] Połączenie było w trybie zatwierdzania ręcznego, a źródło danych rozpoczęło transakcję.
SQLFreeHandle
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH)[1] | C0 | (HY010) | (HY010) | (HY010) | (HY010) | (HY010) |
(IH)[2] | (IH) | (C1) | (HY010) | (HY010) | (HY010) | (HY010) |
(IH)[3] | (IH) | (IH) | (IH) | (IH) | C4[5] --[6] | --[7] C4[5] i [8] C5[6] i [8] |
(IH)[4] | (IH) | (IH) | (IH) | -- | -- | -- |
[1] Ten wiersz pokazuje przejścia, gdy
[2] Ten wiersz pokazuje przejścia, gdy HandleType został SQL_HANDLE_DBC.
[3] Ten wiersz pokazuje przejścia, gdy
[4] Ten wiersz pokazuje przejścia, gdy
[5] W połączeniu przydzielono tylko jedną instrukcję.
[6] W połączeniu przydzielono wiele instrukcji.
[7] Połączenie było w trybie zatwierdzania ręcznego.
[8] Połączenie było w trybie automatycznego zatwierdzania.
SQLFreeStmt
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH)[1] | (IH) | (IH) | (IH) | (IH) | -- | C5[3] --[4] |
(IH)[2] | (IH) | (IH) | (IH) | (IH) | -- | -- |
[1] Ten wiersz pokazuje transakcje, gdy argument opcji jest SQL_CLOSE.
[2] Ten wiersz pokazuje transakcje, gdy argument opcji
[3] Połączenie było w trybie automatycznego zatwierdzania i nie były otwarte kursory na żadnych instrukcjach z wyjątkiem tego.
[4] Połączenie było w trybie zatwierdzania ręcznego lub było w trybie automatycznego zatwierdzania, a kursor był otwarty w co najmniej jednej innej instrukcji.
SQLGetConnectAttr
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | HY010 | -- | -- | -- |
[1] Argument atrybutu
[2] Argument atrybutu
SQLGetDiagField i SQLGetDiagRec
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH)[1] | -- | -- | -- | -- | -- | -- |
(IH)[2] | (IH) | -- | -- | -- | -- | -- |
(IH)[3] | (IH) | (IH) | (IH) | (IH) | -- | -- |
(IH)[4] | (IH) | (IH) | (IH) | -- | -- | -- |
[1] Ten wiersz pokazuje przejścia, gdy
[2] Ten wiersz pokazuje przejścia, gdy HandleType został SQL_HANDLE_DBC.
[3] Ten wiersz pokazuje przejścia, gdy
[4] Ten wiersz pokazuje przejścia, gdy
SQLGetEnvAttr
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
IH | -- | -- | -- | -- | -- | -- |
SqlGetFunctions
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
IH | IH | HY010 | HY010 | -- | -- | -- |
SQLGetInfo
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | 08003 | -- | -- | -- |
[1] Argument
[2] Argument InfoType nie był SQL_ODBC_VER.
SQLMoreResults
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | --[3] C5[1] |
[1] Połączenie było w trybie automatycznego zatwierdzania, a wywołanie SQLMoreResults nie zainicjowało przetwarzania zestawu wyników specyfikacji kursora.
[2] Połączenie było w trybie automatycznego zatwierdzania, a wywołanie SQLMoreResults zainicjowało przetwarzanie zestawu wyników specyfikacji kursora.
[3] Połączenie było w trybie zatwierdzania ręcznego.
SQLNativeSql
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH) | (IH) | (08003) | (08003) | -- | -- | -- |
SQLPrepare
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | -- |
[1] Połączenie było w trybie automatycznego zatwierdzania lub źródło danych nie rozpoczęło transakcji.
[2] Połączenie było w trybie zatwierdzania ręcznego, a źródło danych rozpoczęło transakcję.
SQLSetConnectAttr
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | HY010 | --[3] 08002[4] HY011[5] | --[3] 08002[4] HY011[5] | --[3] i [6] C5[8] 08002[4] HY011[5] lub [7] |
[1] Argument atrybutu
[2] Argument atrybutu
[3] Argument atrybutu
[4] Argument atrybutu został SQL_ATTR_ODBC_CURSORS.
[5] Argument atrybutu
[6] Argument atrybutu
[7] Argument atrybutu
[8] Argument atrybutu
SQLSetEnvAttr
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH) | -- | -- | (HY010) | -- | -- | -- |
Wszystkie inne funkcje ODBC
C0 Nie env. |
C1 Nieprzydzielone |
C2 Przydzielone |
C3 Potrzebuję danych |
C4 Spójny |
C5 Wypowiedź |
C6 Transakcja |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | -- | -- |