Набор записей. Работа с большими элементами данных (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 поле набора записей.

В свою очередь, вы используете дескриптор HGLOBALm_hData, чтобы работать с данными, работающими над ним, как и на любых дескрипторах. В этом случае CByteArray добавляет возможности.

Внимание

Объекты CLongBinary нельзя использовать в качестве параметров в вызовах функций. Кроме того, их реализация, которая вызывает ::SQLGetData, обязательно замедляет производительность прокрутки для прокручиваемого моментального снимка. Это также может быть верно при использовании ::SQLGetData вызова для получения динамических столбцов схемы.

См. также

Набор записей (ODBC)
Набор записей. Определение сумм и других статистических результатов (ODBC)
Обмен данными полей записей (RFX)