Asynchroniczny tryb i SQLCancel
Niektóre funkcje ODBC może działać z synchronicznego lub asynchronicznego.Aplikacja może włączyć operacji asynchronicznych dla dojścia instrukcja lub dojścia połączenia.Jeśli pole wyboru jest zaznaczone dla dojścia połączenia, wpływa na wszystkie dojścia instrukcja na dojścia połączenia.Aplikacja wykorzystuje następujące instrukcje, aby włączyć lub wyłączyć operacji asynchronicznych:
SQLSetConnectAttr(hdbc, SQL_ATTR_ASYNC_ENABLE,
SQL_ASYNC_ENABLE_ON, SQL_IS_INTEGER);
SQLSetConnectAttr(hdbc, SQL_ATTR_ASYNC_ENABLE,
SQL_ASYNC_ENABLE_OFF, SQL_IS_INTEGER);
SQLSetStmtAttr(hstmt, SQL_ATTR_ASYNC_ENABLE,
SQL_ASYNC_ENABLE_ON, SQL_IS_INTEGER);
SQLSetStmtAttr(hstmt, SQL_ATTR_ASYNC_ENABLE,
SQL_ASYNC_ENABLE_OFF, SQL_IS_INTEGER);
Jeśli aplikacja wywoła funkcja ODBC w trybie synchronicznym, sterownik nie zwraca sterowania do aplikacji, dopóki nie zostanie powiadomiony, że serwer zakończył polecenia.
Gdy asynchronicznie, sterownik natychmiast zwraca sterowanie do aplikacji, nawet przed wysyłania polecenia do serwera.Sterownik ustawia kod zwrotny SQL_STILL_EXECUTING.Aplikacja może następnie przeprowadzać inne zadania.
Aplikacja testuje wykonania polecenia, ułatwia tę samą funkcja, wywołanie z tymi samymi parametrami, do sterownika.Jeśli sterownik nie otrzymał jeszcze odpowiedzi z serwera, ponownie zwracają SQL_STILL_EXECUTING.Aplikacja musi przetestować polecenia co pewien czas, dopóki kod zwrotny jest inny niż SQL_STILL_EXECUTING.Kiedy aplikacja uzyskuje niektóre inne kod zwrotny, nawet SQL_ERROR może ustalić, czy polecenie zostało ukończone.
Czasami polecenia jest zaległe przez dłuższy czas.Jeśli aplikacja musi anulować polecenie bez oczekiwania na odpowiedź, to można zrobić poprzez wywołanie SQLCancel w tej samej instrukcja obsługi jako polecenie zaległe.Jest to jedyny czas SQLCancel powinien być używany.Użycie niektórych programistów SQLCancel , gdy są one przetwarzane części sposób przez wynik ustawić i chcesz anulować pozostałą część zestaw wyników.SQLMoreResults or SQLCloseCursor powinny być używane do anulowania pozostałą część zestaw wyników zaległe, SQLCancel.