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


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 функция-член. При создании объектов Recordset в функциях-членах документа передавайте указатель на объект документа CDatabase. При этом каждый набор записей связывается с источником данных. Объект базы данных обычно уничтожается при закрытии документа. Объекты набора записей обычно уничтожаются при выходе из области функции.

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

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

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

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

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

См. также

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