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_hData
aby 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 ::SQLGetData
metodę , 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)