Zestaw rekordów: praca z dużymi elementami danych (ODBC)

Ten temat dotyczy klas MFC ODBC i klas MFC DAO.

Uwaga

Jeśli używasz klas MFC DAO, zarządzaj dużymi elementami danych przy użyciu klasy CByteArray, a nie klasy CLongBinary. Jeśli używasz klas MFC ODBC z pobieraniem wierszy zbiorczych, użyj polecenia CLongBinary zamiast CByteArray. Aby uzyskać więcej informacji na temat zbiorczego pobierania wierszy, zobacz Zestaw rekordów: pobieranie rekordów zbiorczo (ODBC).

Załóżmy, że baza danych może przechowywać duże ilości danych, takie jak mapy bitowe (zdjęcia pracowników, mapy, zdjęcia produktów, obiekty OLE itd.). Tego rodzaju dane są często nazywane obiektem binarnym (lub obiektem BLOB), ponieważ:

  • Każda wartość pola jest duża.

  • W przeciwieństwie do liczb i innych prostych typów danych nie ma przewidywalnego rozmiaru.

  • Dane są bez formularzy z perspektywy programu.

W tym temacie wyjaśniono, jakie funkcje obsługi klas baz danych zapewniają pracę z takimi obiektami.

Zarządzanie dużymi obiektami

Zestawy rekordów mają dwa sposoby rozwiązywania specjalnych problemów związanych z zarządzaniem dużymi obiektami binarnymi. Możesz użyć klasy CByteArray lub użyć klasy CLongBinary. Ogólnie rzecz biorąc, CByteArray jest preferowanym sposobem zarządzania dużymi danymi binarnymi.

CByteArray wymaga większego nakładu pracy niż CLongBinary jest to możliwe, zgodnie z opisem w klasie CByteArray. CLongBinary jest krótko opisany w klasie CLongBinary.

Aby uzyskać szczegółowe informacje o używaniu CByteArray do pracy z dużymi elementami danych, zobacz Technical Note 45 (Uwaga techniczna 45).

Klasa CByteArray

CByteArray jest jedną z klas kolekcji MFC. Obiekt CByteArray przechowuje dynamiczną tablicę bajtów — tablica może rosnąć w razie potrzeby. Klasa zapewnia szybki dostęp według indeksu, podobnie jak w przypadku wbudowanych tablic języka C++. CByteArray obiekty mogą być serializowane i po cenach dumpingowych do celów diagnostycznych. Klasa dostarcza funkcje składowe do pobierania i ustawiania określonych bajtów, wstawiania i dołączania bajtów oraz usuwania jednego bajtu lub wszystkich bajtów. Te obiekty ułatwiają analizowanie danych binarnych. Jeśli na przykład obiekt binarny jest obiektem OLE, może być konieczne przejście przez niektóre bajty nagłówka, aby uzyskać dostęp do rzeczywistego obiektu.

Używanie CByteArray w zestawach rekordów

Dając element członkowski danych pola zestawu rekordów typu CByteArray, należy podać stałą bazę, z której RFX może zarządzać transferem takiego obiektu między zestawem rekordów a źródłem danych i za pomocą którego można manipulować danymi wewnątrz obiektu. RFX potrzebuje określonej lokacji do pobierania danych i potrzebujesz sposobu uzyskiwania dostępu do danych bazowych.

Aby uzyskać szczegółowe informacje o używaniu CByteArray do pracy z dużymi elementami danych, zobacz Technical Note 45 (Uwaga techniczna 45).

Klasa CLongBinary

Obiekt CLongBinary to prosta powłoka wokół HGLOBAL uchwytu do bloku magazynu przydzielonego na stercie. Po powiązaniu kolumny tabeli zawierającej duży obiekt binarny RFX przydziela HGLOBAL dojście, gdy musi przenieść dane do zestawu rekordów i przechowuje uchwyt w CLongBinary polu zestawu rekordów.

Z kolei użyjesz uchwytu HGLOBAL , m_hDataaby pracować z samymi danymi, działając na nim tak samo jak w przypadku danych dojścia. W tym miejscu funkcja CByteArray dodaje możliwości.

Uwaga

Obiektów CLongBinary nie można używać jako parametrów w wywołaniach funkcji. Ponadto ich implementacja, która wywołuje ::SQLGetDatametodę , musi spowalniać przewijanie wydajności migawki z możliwością przewijania. Może to być również prawdziwe, gdy używasz wywołania do pobierania ::SQLGetData kolumn schematu dynamicznego.

Zobacz też

Zestaw rekordów (ODBC)
Zestaw rekordów: uzyskiwanie sum i innych wyników agregacji (ODBC)
Wymiana pól rekordów (RFX)