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

Этот раздел относится к классам ODBC библиотеки MFC.

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

  • Таблица.

  • запрос;

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

Пример набора записей на основе таблицы — "все клиенты" для таблицы "Клиенты". Пример запроса — "все счета для Джо Смита". Пример набора записей на основе хранимой процедуры (иногда называемого предопределенным запросом) — это "все учетные записи, которые вызывают хранимую процедуру в серверной базе данных". В наборе записей могут объединяться две или несколько таблиц из одного источника данных, но не из разных.

Примечание.

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

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

Все объекты наборов записей имеют перечисленные ниже возможности.

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

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

  • Можно фильтровать выбираемые записи для их ограничения.

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

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

Моментальные снимки и Dynasets

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

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

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

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

    Примечание.

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

Наборы записей

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

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

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

Статьи о принципах открытия, чтения и закрытия наборов записей

Статьи о принципах изменения наборов записей

Статьи о более сложных способах использования

Статьи о принципах работы наборов записей

См. также

Интерфейс ODBC
Потребление MFC ODBC
Транзакция (ODBC)