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


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

Иногда в приложениях базы данных может не потребоваться использовать архитектуру документа или представления платформы. В этом разделе рассматриваются следующие вопросы.

Если документы не нужны

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

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

Если приложению не требуется документ для хранения данных, вы можете обойтись с некоторыми или всеми архитектурами документов и представлений платформы. Сколько вы не используете, зависит от выбранного подхода. Вы можете следующее.

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

  • Используйте окно фрейма, в которое вы рисуете напрямую, а не с помощью представления. В этом случае вы опустите документ и храните все подключения к данным или данным в объекте окна фрейма.

Параметры мастера приложений для документов и представлений

Мастер приложений MFC имеет несколько вариантов в поддержке базы данных Select, которые перечислены в следующей таблице. Если вы используете мастер приложений MFC для создания приложения, все эти параметры создают приложения с документами и представлениями. Некоторые варианты предоставляют документы и представления, которые не содержат ненужных функций документов. Дополнительные сведения см. в разделе "Поддержка баз данных" мастера приложений MFC.

Параметр Представление Документ
нет Производное от CView. Не поддерживает базу данных. Этот параметр по умолчанию.

Если выбрать параметр поддержки архитектуры документа или представления на странице "Тип приложения" MFC, вы получите полную поддержку документов, включая сериализацию и создание, открытие, сохранение и сохранение от имени в меню "Файл". Просмотр приложений без документа.
Только файлы заголовков Производное от CView. Предоставляет базовый уровень поддержки базы данных для приложения.

Включает Afxdb.h. Добавляет библиотеки ссылок, но не создает классы, относящиеся к базе данных. Вы можете создавать наборы записей позже и использовать их для проверки и обновления записей.
Представление базы данных без поддержки файлов Производный от CRecordView Предоставляет поддержку документов, но не поддерживает сериализацию. Документ может хранить набор записей и координировать несколько представлений; не поддерживает сериализацию или команды "Создать", "Открыть", "Сохранить" и "Сохранить как". Просмотр приложений с минимальными документами. Если вы включаете представление базы данных, необходимо указать источник данных.

Включает файлы заголовков базы данных, библиотеки ссылок, представление записей и набор записей. (Доступно только для приложений с помощью Параметр поддержки архитектуры документа и представления, выбранный на странице "Тип приложения, мастер приложений MFC".)
Представление базы данных с поддержкой файлов Производный от CRecordView Предоставляет полную поддержку документов, включая сериализацию и команды меню файлов, связанных с документами. Приложения базы данных обычно работают на основе каждой записи, а не на основе каждого файла и поэтому не требуют сериализации. Однако у вас может быть специальное использование для сериализации. Просмотр приложений с минимальными документами. Если вы включаете представление базы данных, необходимо указать источник данных.

Включает файлы заголовков базы данных, библиотеки ссылок, представление записей и набор записей. (Доступно только для приложений с помощью Параметр поддержки архитектуры документа и представления, выбранный на странице "Тип приложения, мастер приложений 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 переопределении. Это позволяет избежать попытки создать объект до инициализации платформы.

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

См. также

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