MFC. Использование классов базы данных с документами и представлениями

Классы базы данных MFC можно использовать с архитектурой документа или представления или без нее. В этом разделе подчеркивается работа с документами и представлениями. В нем объясняется:

Дополнительные сведения см. в разделе MFC: использование классов баз данных без документов и представлений.

Написание приложения на основе форм

Многие приложения для доступа к данным основаны на формах. Пользовательский интерфейс — это форма, содержащая элементы управления, в которых пользователь проверяет, вводит или редактирует данные. Чтобы сделать форму приложения базой, используйте класс CRecordView. При запуске мастера приложений MFC и выбора типа клиента ODBC на странице поддержки базы данных проект используется CRecordView для класса представления.

В приложении на основе форм каждый объект представления записей сохраняет указатель на CRecordset объект. Механизм обмена полями записей платформы (RFX) обменивается данными между набором записей и источником данных. Механизм обмена данными диалогового окна (DDX) обменивается данными между элементами данных поля объекта набора записей и элементами управления в форме. CRecordView также предоставляет функции обработчика команд по умолчанию для перехода от записи к записи в форме.

Сведения о создании приложения на основе форм с помощью мастера приложений см. в разделе "Создание приложения MFC на основе форм" и "Поддержка баз данных" мастера приложений MFC.

Полный обзор форм см. в разделе "Просмотры записей".

Использование наборов записей в документах и представлениях

Многие простые приложения на основе форм не нуждаются в документах. Если приложение является более сложным, возможно, вы хотите использовать документ в качестве прокси-сервера для базы данных, сохраняя CDatabase объект, который подключается к источнику данных. Приложения на основе форм обычно хранят указатель на объект набора записей в представлении. Другие типы приложений базы данных хранят наборы записей и CDatabase объекты в документе. Ниже приведены некоторые возможности использования документов в приложениях базы данных:

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

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

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

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

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

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

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

Прочие факторы

Приложения на основе форм часто не используются для механизма сериализации документов платформы, поэтому может потребоваться удалить, отключить или заменить команды "Создать " и "Открыть " в меню "Файл ". См. статью Сериализация: сериализация и выходные данные базы данных.

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

Возможно, вы хотите реализовать печать любого из ваших представлений, будь то форма, реализованная с CRecordView или что-то другое. Как классы, производные от CFormView, CRecordView не поддерживают печать, но можно переопределить OnPrint функцию-член, чтобы разрешить печать. Дополнительные сведения см. в классе CFormView.

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

См. также

MFC-классы баз данных