Набор записей (ODBC)

Обновлен: Ноябрь 2007

Данный раздел посвящен классам ODBC библиотеки MFC.

Объект CRecordset представляет собой набор записей, выбранных из источника данных. Для выборки записей могут использоваться следующие объекты:

  • Таблица.

  • Запрос.

  • Хранимая процедура, в которой выполняется обращение к нескольким таблицам.

Например, на базе таблицы можно создать набор записей, содержащий всех клиентов, в котором выполняется обращение к таблице клиентов. На базе запроса можно создать набор записей, содержащий, например, все счета конкретного лица. На базе хранимой процедуры, которая иногда называется предопределенным запросом, можно создать набор записей, содержащий все неоплаченные счета, в котором вызывается хранимая процедура серверной базы данных. В наборе записей допускается объединение нескольких таблиц только из одного источника данных.

5sbfs6f1.alert_note(ru-ru,VS.90).gifПримечание.

Дополнительные сведения о создании производных классов наборов записей см. в разделах Добавление объекта-получателя ODBC MFC и Поддержка баз данных. Мастер приложений MFC.

5sbfs6f1.alert_note(ru-ru,VS.90).gifПримечание.

Некоторые драйвера ODBC поддерживают представления баз данных. В этом контексте представление — это запрос, изначально создаваемый с помощью инструкции CREATE VIEW языка SQL. В текущей версии представления не поддерживаются мастерами, однако при необходимости можно написать код поддержки представлений самостоятельно.

Возможности наборов записей

Все объекты наборов записей обладают следующими возможностями:

  • Если источник данных доступен для записи, можно разрешить обновление набора и добавление записей в него, а также определить набор записей как доступный только для чтения. Если разрешено обновление набора записей, можно выбрать пессимистический или оптимистический режим блокировки (если соответствующий режим поддерживается драйвером). Набор записей, основанный на доступном только для чтения источнике данных, также доступен только для чтения.

  • Поддерживается вызов функций-членов для прокрутки выбранных записей.

  • Поддерживается фильтрация выбранных записей.

  • Поддерживается сортировка записей в порядке возрастания и убывания по одному или нескольким столбцам.

  • Поддерживается параметризация набора записей, что позволяет задавать выбранные в наборе записи во время выполнения.

Моментальные снимки и динамические наборы

Существует два основных типа наборов записей: моментальные снимки и динамические наборы. В классе CRecordset поддерживаются наборы обоих типов. Наборы каждого типа обладают всеми общими характеристиками наборов записей и дополняют их собственными специализированными возможностями. Моментальный снимок представляет собой статическое представление данных, которое используется для составления отчетов и в других ситуациях, в которых необходимо получить данные по состоянию на определенный момент времени. Динамические наборы предназначены для отображения изменения, вносимых в набор записей другими пользователями, без выполнения запроса или обновления набора. Моментальные снимки и динамические наборы могут быть доступны для обновления или только для чтения. Чтобы отобразить добавление или удаление записей другими пользователями, вызовите метод CRecordset::Requery.

В классе CRecordset также поддерживаются другие типы наборов записей: динамические наборы записей и наборы последовательного доступа. В отличие от динамических наборов, в динамических наборах записей отображается добавление или удаление любых записей без вызова метода CRecordset::Requery. В связи с этим динамические наборы записей обычно требуют большего времени на обработку со стороны СУБД и не поддерживаются многими драйверами ODBC. Наборы записей последовательного доступа предоставляют наиболее эффективный способ доступа к данным для наборов записей, не требующих обновления или обратной прокрутки. Например, такие наборы можно использовать для переноса данных из одного источника в другой, при котором просмотр данных осуществляется только в прямом направлении. Чтобы использовать набор данных последовательного доступа, выполните следующие действия:

  • Передайте CRecordset::forwardOnly в качестве параметра nOpenType функции-члена Open.

  • Установите значение CRecordset::readOnly для параметра dwOptions функции-члена Open.

    5sbfs6f1.alert_note(ru-ru,VS.90).gifПримечание.

    Дополнительные сведения о требованиях, предъявляемых к драйверу ODBC для поддержки динамических наборов, см.в разделе ODBC. Список драйверов ODBC, поставляемых с данной версией Visual C++, а также сведения о приобретении дополнительных драйверов см. в разделе Список драйверов ODBC.

Работа с наборами записей

Для всех отдельных таблиц, представлений или хранимых процедур, к которым выполняется обращение, обычно определяется класс, производный от класса CRecordset. (Исключением является ситуация объединения баз данных, в которой один набор записей представляет столбцы нескольких таблиц.) При создании производного класса необходимо включить механизмы стандартного или пакетного обмена полями записей (RFX и Bulk RFX соответственно), которые аналогичны механизму обмена данными диалогового окна (DDX). Функции RFX и Bulk RFX позволяют упростить передачу данных из источника в набор записей. Функция RFX также поддерживает передачу данных из набора записей в источник. Дополнительные сведения см. в разделах Обмен полями записей (RFX) и Набор записей. Пакетная выборка строк (ODBC).

Объект набора записей обеспечивает доступ ко всем выбранным записям. Для прокрутки между выбранными записями используйте такие функции-члены класса CRecordset, как MoveNext и MovePrev. В любой момент времени в объекте набора записей может быть представлена только одна из выбранных записей — текущая запись. Чтобы просмотреть поля текущей записи, объявите переменные-члены класса набора записей, которые соответствуют столбцам таблицы или записям, полученным в результате выполнения запроса базы данных. Дополнительные сведения о членах данных набора записей см. в разделе Набор записей. Архитектура (ODBC).

Дополнительные сведения об использовании объектов наборов записей см. в следующих разделах. Разделы приведены по функциональным категориям в порядке, обеспечивающем их последовательное изучение.

Открытие, чтение и закрытие наборов записей

Изменение наборов записей

Дополнительные возможности

Принципы работы наборов записей

См. также

Задачи

Добавление потребителя ODBC MFC

Основные понятия

Интерфейс ODBC (ODBC)

Транзакция (ODBC)