MFC. Использование классов базы данных с документами и представлениями
Классы базы данных MFC можно использовать с архитектурой документа или представления или без нее. В этом разделе подчеркивается работа с документами и представлениями. В нем объясняется:
Как написать приложение на основе форм с помощью
CRecordView
объекта в качестве основного представления в документе.Использование объектов набора записей в документах и представлениях.
Дополнительные сведения см. в разделе 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: использование классов базы данных без документов и представлений.