Поделиться через


Набор записей. Создание и закрытие наборов записей (ODBC)

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

Чтобы воспользоваться набором записей, создайте объект набора записей и затем вызовите его функцию-член Open, чтобы выполнить запрос набора записей, и заполнить его. После завершения работы с набором записей закройте и удалите этот объект.

Содержание раздела:

  • Когда и как следует создавать объект набора записей.

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

  • Когда и как следует закрывать объект набора записей.

Создание наборов записей во время выполнения

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

Откройте динамическое подмножество данных или создайте моментальный снимок объекта, если требуется выбрать записи из источника данных. Тип создаваемого объекта зависит от того, какие операции с данными требуется выполнять в вашем приложении, а также от того, какие операции поддерживает ваш драйвер ODBC. Дополнительные сведения см. в разделах Динамическое подмножество данных и Моментальный снимок.

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

  1. Создайте объект класса, производного от класса CRecordset.

    Этот объект можно создать в куче или в кадре стека функции.

  2. При необходимости измените свойства набора записей, заданные по умолчанию. Дополнительные сведения о доступных параметрах см. в разделе Настройка параметров набора записей.

  3. Вызовите функцию-член Open этого объекта.

В конструкторе передайте указатель объекту CDatabase или передайте NULL, чтобы использовать временный объект базы данных, создаваемый и открываемый платформой в зависимости от строки подключения, возвращаемой функцией-членом GetDefaultConnect. Возможно, что объект CDatabase уже подключен к источнику данных.

При вызове функции Open используется SQL-директива для выборки записей из источника данных. Первая выбранная запись (если имеется) будет текущей записью. Значения полей этой записи сохраняются в данных-членах поля объекта набора данных. Если выбраны записи, то функции-члены IsBOF и IsEOF возвращают значение 0.

При выполнении вызова Open можно выполнять следующие действия:

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

    По умолчанию в наборе записей используется стандартный тип, хранящийся в данных-членах CRecordset m_nDefaultType. С помощью мастеров можно записать код инициализации m_nDefaultType в набор записей, выбираемый в мастере. Вместо того, чтобы использовать параметры по умолчанию, можно подставить другой тип набора записей.

  • Указать строку для замены стандартной SQL-директивы SELECT, создаваемой набором записей.

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

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

// Construct the snapshot object
CStudentSet rsStudent( NULL );
// Set options if desired, then open the recordset
if(!rsStudent.Open(CRecordset::snapshot, NULL, CRecordset::readOnly))
    return FALSE;
// Use the snapshot to operate on its records...

После вызова Open можно использовать функции-члены и данные члены объекта для работы с записями. В некоторых случаях может потребоваться повторный запрос или обновление набора записей, чтобы отразить изменения в источнике данных. Дополнительные сведения см. в разделе Наборы записей: повторное обращение (ODBC).

Совет

Строка подключения, которую вы используете в процессе разработки, может не соответствовать той, что требуется вашим конечным пользователям.Предложения и идеи по созданию универсальных в этом отношении приложений можно найти в разделе Источники данных: управление подключениями (ODBC).

Настройка параметров набора записей

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

  • Указывать фильтр для ограничения выбора записей.

  • Указывать порядок сортировки записей.

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

Можно также указывать следующий параметр, если для этого имеются соответствующие условия:

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

Примечание

Чтобы заданные условия повлияли на выбор записей, необходимо настроить эти параметры до вызова функции-члена Open.

Закрытие набора записей

По завершении работы с набором записей необходимо удалить его и высвободить выделенную для него память.

Закрытие набора записей

  1. Выполните вызов его функции-члена Close.

  2. Удалите объект набора записей.

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

Команда Close высвобождает дескриптор HSTMT набора записей. Она не удаляет этот объект C++.

См. также

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

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

Набор записей. Прокрутка (ODBC)

Набор записей. Добавление, обновление и удаление записей (ODBC)