Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Иногда в приложениях базы данных может не потребоваться использовать архитектуру документа или представления платформы. В этом разделе рассматриваются следующие вопросы.
Если вам не нужно использовать такие документы, как сериализация документов .
Параметры мастера приложений для поддержки приложений без сериализации и без команд меню, связанных с документом, таких как "Создать", "Открыть", "Сохранить" и "Сохранить как".
Как работать с приложением, использующим минимальный документ.
Если документы не нужны
Некоторые приложения имеют отдельную концепцию документа. Обычно эти приложения загружают все или большую часть файла из хранилища в память с помощью команды "Открыть файл". Они одновременно записывают обновленный файл обратно в хранилище с командой "Сохранить файл" или "Сохранить как". То, что видит пользователь, представляет собой файл данных.
Однако для некоторых категорий приложений не требуется документ. Приложения базы данных работают с точки зрения транзакций. Приложение выбирает записи из базы данных и представляет их пользователю, часто один раз. То, что видит пользователь, обычно является одной текущей записью, которая может быть единственной в памяти.
Если приложению не требуется документ для хранения данных, вы можете обойтись с некоторыми или всеми архитектурами документов и представлений платформы. Сколько вы не используете, зависит от выбранного подхода. Вы можете:
Используйте минимальный документ в качестве места для хранения подключения к источнику данных, но не используя обычные функции документа, такие как сериализация. Это полезно, если требуется несколько представлений данных и требуется синхронизировать все представления, обновлять их одновременно и т. д.
Используйте окно фрейма, в которое вы рисуете напрямую, а не с помощью представления. В этом случае вы исключаете документ и храните любые данные или подключения к ним в объекте окна фрейма.
Параметры мастера приложений для документов и представлений
Мастер приложений MFC имеет несколько вариантов в поддержке базы данных Select, которые перечислены в следующей таблице. Если вы используете мастер приложений MFC для создания приложения, все эти параметры создают приложения с документами и представлениями. Некоторые опции предоставляют документы и представления, которые не содержат ненужных функций. Дополнительные сведения см. в разделе Поддержка баз данных мастера приложений MFC.
| Вариант | Вид | Документ |
|---|---|---|
| Не допускается | Производное от CView. |
Не поддерживает базу данных. Этот параметр по умолчанию. Если выбрать параметр поддержка архитектуры документа/представления на странице "Тип приложения" мастера приложений MFC, вы получите полную поддержку документов, включая сериализацию и команды Создать, Открыть, Сохранить и Сохранить как в меню "Файл". См. приложения без документа. |
| Только файлы заголовков | Производное от CView. |
Предоставляет базовый уровень поддержки базы данных для приложения. Включает Afxdb.h. Добавляет библиотеки ссылок, но не создает классы, относящиеся к базе данных. Вы можете создавать наборы записей позже и использовать их для проверки и обновления записей. |
| Представление базы данных без поддержки файлов | Производный от CRecordView |
Предоставляет поддержку документов, но не поддерживает сериализацию. Документ может хранить набор записей и координировать несколько представлений; не поддерживает сериализацию или команды "Создать", "Открыть", "Сохранить" и "Сохранить как". См. приложения с минимальными документами. Если вы включаете представление базы данных, необходимо указать источник данных. Включает файлы заголовков базы данных, библиотеки ссылок, представление записей и набор записей. (Доступно только для приложений с выбранной опцией поддержки архитектуры документ/представление на странице Мастер приложений MFC, Тип приложения.) |
| Представление базы данных с поддержкой файлов | Производный от CRecordView |
Предоставляет полную поддержку документов, включая сериализацию и команды меню Файл, связанные с документами. Приложения базы данных обычно работают на основе каждой записи, а не на основе каждого файла и поэтому не требуют сериализации. Однако у вас может быть особое применение для сериализации. См. приложения с минимальными документами. Если вы включаете представление базы данных, необходимо указать источник данных. Включает файлы заголовков базы данных, библиотеки ссылок, представление записей и набор записей. (Доступно только для приложений с выбранным параметром поддержка архитектуры Document/View на странице "Тип приложения, мастер приложений MFC".) |
Для обсуждения альтернатив сериализации и альтернативных способов использования сериализации см. раздел Сериализация: Сериализация против ввода/вывода базы данных.
Приложения с минимальными документами
Мастер приложений MFC имеет два варианта, которые поддерживают приложения доступа к данным на основе форм. Каждый параметр создает производный CRecordViewкласс представления и документ. Они отличаются тем, что они упускают из документа.
Документ без поддержки файлов
Выберите параметр мастера приложений представление базы данных без поддержки файлов, если вам не нужна сериализация документов. Документ служит следующим полезным целям:
Это удобное место для хранения
CRecordsetобъекта.Это использование похоже на обычные понятия документа: документ хранит данные (или, в данном случае, набор записей), а вид является представлением документа.
Если приложение представляет несколько представлений (например, несколько представлений записей), документ поддерживает координацию представлений.
Если несколько представлений показывают одни и те же данные, можно использовать
CDocument::UpdateAllViewsфункцию-член для координации обновлений всех представлений при изменении данных.
Обычно этот параметр используется для простых приложений на основе форм. Мастер приложений поддерживает удобную структуру для таких приложений автоматически.
Документ с поддержкой файлов
Выберите в мастере приложений опцию базы данных Представление базы данных с поддержкой файлов, если у вас есть альтернативный вариант использования для команд меню Файл, связанных с документами и сериализации документов. Для части вашей программы, связанной с доступом к данным, можно использовать документ таким же образом, как описано в Документ без поддержки файлов. Вы можете использовать возможность сериализации документа, например для чтения и записи сериализованного документа профиля пользователя, в который хранятся предпочтения пользователя или другие полезные сведения. Дополнительные идеи см. в разделе "Сериализация: сериализация и вывод базы данных".
Мастер приложений поддерживает этот параметр, но необходимо написать код, сериализующий документ. Храните сериализованные сведения в элементах данных документа.
Приложения без документации
Иногда может потребоваться написать приложение, которое не использует документы или представления. Без документов вы храните данные (например, объект CRecordset) в классе окна фрейма или классе приложения. Все дополнительные требования зависят от того, представляет ли приложение пользовательский интерфейс.
Поддержка базы данных с пользовательским интерфейсом
Если у вас есть пользовательский интерфейс (кроме, например, интерфейса командной строки консоли), приложение обращается непосредственно в клиентскую область окна рамки, а не в представление. Такое приложение не использует CRecordViewCFormViewили CDialog для его основного пользовательского интерфейса, но обычно CDialog используется для обычных диалогов.
Написание приложений без документов
Так как мастер приложений не поддерживает создание приложений без документов, необходимо написать собственный CWinAppпроизводный класс и при необходимости создать CFrameWnd или CMDIFrameWnd класс. Переопределите CWinApp::InitInstance и объявите объект приложения следующим образом:
CYourNameApp theApp;
Платформа по-прежнему предоставляет механизм карты сообщений и многие другие функции.
Поддержка базы данных отдельно от пользовательского интерфейса
Некоторые приложения не нуждаются в пользовательском интерфейсе или только минимальном. Например, предположим, что вы пишете:
Промежуточный объект доступа к данным, который другие приложения (клиенты) могут воспользоваться для специальной обработки данных между приложением и источником данных.
Приложение, обрабатывающее данные без вмешательства пользователя, например приложение, которое перемещает данные из одного формата базы данных в другой или выполняет вычисления и выполняет пакетные обновления.
Поскольку ни один документ не владеет объектом CRecordset, вероятно, вы захотите сохранить его как вложенный элемент данных в классе, производном от CWinApp. Ниже представлены возможные альтернативы.
Не сохраняя вообще постоянный
CRecordsetобъект. Вы можете передать NULL в конструкторы классов наборов записей. В этом случае фреймворк создает временныйCDatabaseобъект, используя сведения из функции-членаGetDefaultConnectнабора записей. Это наиболее вероятный альтернативный подход.CRecordsetСоздание объекта глобальной переменной. Эта переменная должна быть указателем на объект набора записей, который создается динамически вCWinApp::InitInstanceпереопределении. Это позволяет избежать попытки создать объект до инициализации платформы.Использование объектов набора записей как и следовало бы в контексте документа или представления. Создавайте наборы записей в методах-членах вашего приложения или объектах окон фрейма.