Набор записей. Работа с большими элементами данных (ODBC)
Этот раздел относится как к классам ODBC MFC, так и к классам DAO MFC.
Примечание.
Если вы используете классы DAO MFC, управляйте большими элементами данных с помощью класса CByteArray, а не класса CLongBinary. Если вы используете классы ODBC MFC с массовым получением строк, используйте CLongBinary
вместо CByteArray
них. Дополнительные сведения о выборке массовых строк см. в разделе Recordseting Records: Получение записей в пакетной службе (ODBC).
Предположим, что база данных может хранить большие фрагменты данных, такие как растровые изображения (фотографии сотрудников, карты, изображения продуктов, объекты OLE и т. д.). Этот тип данных часто называется двоичным большим объектом (или BLOB), так как:
Каждое значение поля имеет большое значение.
В отличие от чисел и других простых типов данных, он не имеет прогнозируемого размера.
Данные неформен с точки зрения вашей программы.
В этом разделе объясняется, что поддерживает классы баз данных для работы с такими объектами.
Управление большими объектами
Наборы записей имеют два способа решения особых проблем управления двоичными большими объектами. Класс CByteArray можно использовать или использовать класс CLongBinary. Как правило, CByteArray
предпочтительный способ управления большими двоичными данными.
CByteArray
требует больше накладных расходов, чем CLongBinary
более способный, как описано в классе CByteArray. CLongBinary
кратко описывается в классе CLongBinary.
Подробные сведения об использовании CByteArray
для работы с большими элементами данных см . в техническом примечание 45.
Класс CByteArray
CByteArray
является одним из классов коллекции MFC. Объект CByteArray
хранит динамический массив байтов— массив может расти при необходимости. Класс обеспечивает быстрый доступ по индексу, как и встроенные массивы C++. CByteArray
объекты можно сериализовать и дампать для диагностических целей. Класс предоставляет функции-члены для получения и настройки указанных байтов, вставки и добавления байтов, а также удаления одного байта или всех байтов. Эти средства упрощают анализ двоичных данных. Например, если двоичный объект является объектом OLE, может потребоваться выполнить некоторые байты заголовков, чтобы достичь фактического объекта.
Использование CByteArray в наборах записей
Предоставив элемент данных поля набора записей, CByteArray
вы предоставляете фиксированную базу, из которой RFX может управлять передачей такого объекта между набором записей и источником данных, а также с помощью которого можно управлять данными внутри объекта. RFX требует определенного сайта для полученных данных, и вам нужен способ доступа к базовым данным.
Подробные сведения об использовании CByteArray
для работы с большими элементами данных см . в техническом примечание 45.
Класс CLongBinary
Объект CLongBinary — это простая оболочка вокруг HGLOBAL
дескриптора к блоку хранилища, выделенного в куче. При привязке столбца таблицы, содержащего двоичный большой объект, RFX выделяет HGLOBAL
дескриптор, когда он должен передавать данные в набор записей и сохраняет дескриптор в CLongBinary
поле набора записей.
В свою очередь, вы используете дескриптор HGLOBAL
m_hData
, чтобы работать с данными, работающими над ним, как и на любых дескрипторах. В этом случае CByteArray добавляет возможности.
Внимание
Объекты CLongBinary нельзя использовать в качестве параметров в вызовах функций. Кроме того, их реализация, которая вызывает ::SQLGetData
, обязательно замедляет производительность прокрутки для прокручиваемого моментального снимка. Это также может быть верно при использовании ::SQLGetData
вызова для получения динамических столбцов схемы.
См. также
Набор записей (ODBC)
Набор записей. Определение сумм и других статистических результатов (ODBC)
Обмен данными полей записей (RFX)