Udostępnij za pośrednictwem


ODBC: biblioteka kursorów ODBC

W tym temacie opisano bibliotekę kursorów ODBC i wyjaśniono, jak z niej korzystać. Aby uzyskać więcej informacji, zobacz:

Biblioteka kursorów ODBC to biblioteka biblioteki dynamicznego łącza (DLL), która znajduje się między menedżerem sterowników ODBC a sterownikiem. W kategoriach ODBC sterownik utrzymuje kursor, aby śledzić swoją pozycję w zestawie rekordów. Kursor oznacza położenie w zestawie rekordów, do którego został już przewinięty — bieżący rekord.

Biblioteka kursorów i sterowniki ODBC poziomu 1

Biblioteka kursorów ODBC udostępnia następujące nowe funkcje poziomu 1:

  • Przewijanie do przodu i do tyłu. Sterowniki poziomu 2 nie wymagają biblioteki kursorów, ponieważ można je już przewijać.

  • Obsługa migawek. Biblioteka kursorów zarządza buforem zawierającym rekordy migawki. Ten bufor odzwierciedla usunięcia i edycje programu do rekordów, ale nie do dodawania, usuwania lub edycji innych użytkowników. W związku z tym migawka jest aktualna tylko jako bufor biblioteki kursorów. Bufor również nie odzwierciedla własnych dodatków, dopóki nie wywołasz metody Requery. Zestawy dynaset nie używają biblioteki kursorów.

Biblioteka kursorów udostępnia migawki (kursory statyczne), nawet jeśli nie są one normalnie obsługiwane przez sterownik. Jeśli sterownik obsługuje już kursory statyczne, nie musisz ładować biblioteki kursorów, aby uzyskać obsługę migawek. Jeśli używasz biblioteki kursorów, możesz użyć tylko migawek i zestawów rekordów tylko do przodu. Jeśli sterownik obsługuje dynamiczne (KEYSET_DRIVEN kursory) i chcesz ich używać, nie możesz użyć biblioteki kursorów. Jeśli chcesz użyć zarówno migawek, jak i dynamicznych, musisz opierać je na dwóch różnych obiektach (dwóch różnych CDatabase połączeniach), chyba że sterownik obsługuje oba te elementy.

Pozycjonowane aktualizacje i kolumny sygnatury czasowej

Uwaga

Źródła danych ODBC są dostępne za pośrednictwem klas MFC ODBC, zgodnie z opisem w tym temacie lub za pośrednictwem klas MFC Data Access Object (DAO).

Uwaga

Jeśli sterownik ODBC obsługuje funkcję SQLSetPos, która jest używana przez MFC, jeśli jest dostępna, ten temat nie ma zastosowania do Ciebie.

Większość sterowników poziomu 1 nie obsługuje aktualizacji umieszczonych. Takie sterowniki polegają na bibliotece kursorów, aby emulować możliwości sterowników poziomu 2 w tym zakresie. Biblioteka kursorów emuluje obsługę aktualizacji rozmieszczonych przez wykonanie przeszukanej aktualizacji w polach, które nie są zmieniane.

W niektórych przypadkach zestaw rekordów może zawierać kolumnę znacznika czasu jako jedno z tych niezmieniających się pól. W przypadku używania zestawów rekordów MFC z tabelami zawierającymi kolumny sygnatury czasowej występują dwa problemy.

Pierwszy problem dotyczy migawek z możliwością aktualizacji w tabelach z kolumnami sygnatury czasowej. Jeśli tabela, do której jest powiązana migawka, zawiera kolumnę znacznika czasu, wywołaj Requery metodę po wywołaniu Edit metody i Update. Jeśli nie, może nie być możliwe ponowne edytowanie tego samego rekordu. Po wywołaniu Edit metody , Updaterekord jest zapisywany w źródle danych, a kolumna znacznika czasu jest aktualizowana. Jeśli nie wywołasz Requerymetody , wartość znacznika czasu rekordu w migawce nie jest już zgodna z odpowiednim znacznikem czasu w źródle danych. Podczas ponownej próby zaktualizowania rekordu źródło danych może nie zezwalać na aktualizację z powodu niezgodności.

Drugi problem dotyczy ograniczeń klasy CTime , gdy jest używany z funkcją RFX_Date do transferu informacji o godzinie i dacie do lub z tabeli. CTime Przetwarzanie obiektu nakłada pewne obciążenie w postaci dodatkowego przetwarzania pośredniego podczas transferu danych. Zakres CTime dat obiektów może również być zbyt ograniczający dla niektórych aplikacji. Nowa wersja RFX_Date funkcji przyjmuje parametr odBC TIMESTAMP_STRUCT zamiast CTime obiektu. Aby uzyskać więcej informacji, zobacz RFX_Date w temacie Makra i globalne w dokumentacji MFC.

Korzystanie z biblioteki kursorów

Podczas nawiązywania połączenia ze źródłem danych — przez wywołanie metody CDatabase::OpenEx lub CDatabase::Open — możesz określić, czy używać biblioteki kursorów dla źródła danych. Jeśli utworzysz migawki w tym źródle danych, określ CDatabase::useCursorLib opcję w parametrze dwOptions na OpenEx lub określ wartość TRUE dla parametru bUseCursorLib na Open wartość (wartość domyślna to TRUE). Jeśli sterownik ODBC obsługuje dynamiczne zestawy i chcesz otworzyć dynasety w źródle danych, nie używaj biblioteki kursorów (maskuje niektóre funkcje sterownika potrzebne do dynasetów). W takim przypadku nie należy określać CDatabase::useCursorLib parametru OpenEx FALSE dla parametru bUseCursorLib w pliku Open.

Zobacz też

Podstawy ODBC