Московский государственный университет имени М.В.Ломоносова
Опубликован: 20.12.2005 | Доступ: свободный | Студентов: 3141 / 371 | Оценка: 4.22 / 3.86 | Длительность: 12:03:00
ISBN: 978-5-9556-0068-0
Лекция 10:

Реализация доступа к базам данных в среде VISUAL STUDIO.NET на языке С++ с применением MFC

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >

Создание приложений баз данных

Средства MFC Application Wizard позволяют практически без всякого программирования разрабатывать приложения, выполняющие подключение к таблице базы данных и отображение содержимого ее полей. При этом для реализации доступа к базе данных используется или механизм ODBC, или OLE DB.

Для того чтобы использовать ODBC-драйверы, первоначально следует создать источник данных DSN (Data Source Name). Это можно сделать как в момент формирования проекта с помощью MFC Application Wizard, так и используя ODBC32 панели управления Windows.

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

Для того, чтобы создать приложение, реализующее доступ к базе данных, выполните следующие действия:

  1. Создайте новый проект. Выберите в качестве шаблона создаваемого проекта MFC Application.
  2. Автоматически формируемые приложения, реализующие работу с базой данных, должны поддерживать архитектуру "документ-отображение". (Выберите, например, тип приложения Single Document).
  3. Перейдите на страницу Database Support (рис. 10.1) и определите поддержку работы с базой данных. Опция Database view without file support обеспечивает формирование кода, выполняющего подключение к источнику данных, но без поддержки механизма сериалицации. Опция Bind all columns доступна только для ODBC и обеспечивает автоматическое связывание полей результирующего набора с переменными членами класса, наследуемого от CRecordset.
    Страница Database Support мастера MFC Application Wizard

    Рис. 10.1. Страница Database Support мастера MFC Application Wizard
  4. Выберите механизм доступа (Client type):
    • опция ODBC обеспечивает включение в проект заголовочного файла AFXDB.H и линкуемых библиотек;
    • опция OLE DB обеспечивает включение в проект заголовочных файлов ATLBASE.H, AFXOLEDB.H и ATLPLUS.H.
    Если для Database Support была установлена опция Database view without file support или Database view with file support, то для механизма ODBC создаваемый класс отображения будет наследоваться от CRecordView и будет ассоциирован с классом результирующего набора, наследуемого от CRecordset. Для механизма OLE DB класс отображения наследуется от COleDBRecordView и ассоциируется с классом, наследуемым от CTable или CCommand.
  5. Далее, если используется механизм ODBC, то следует выбрать источник данных, с которым устанавливается соединение. По щелчку мышью на командной кнопке Data Source отображается диалог для выбора источника данных (рис. 10.2).
    Диалог для выбора источника данных (для ODBC)

    Рис. 10.2. Диалог для выбора источника данных (для ODBC)
  6. При использовании механизма OLE DB также следует определить источник данных, используя или имя источника данных, или строку подключения (рис. 10.3)
    Диалог для выбора источника данных (для OLE DB)

    Рис. 10.3. Диалог для выбора источника данных (для OLE DB)
  7. После определения используемого источника данных и идентификации пользователя отображается диалог (рис. 10.4) со всеми таблицами, представлениями и хранимыми процедурами (только для OLE DB) источника данных, которые доступны данному пользователю. В этом диалоге следует выбрать таблицу базы данных, используемую для формирования результирующего набора.
    Диалог Select Database Object

    Рис. 10.4. Диалог Select Database Object
  8. На странице Generated Classes отображается список классов, автоматически создаваемый MFC Application Wizard. Класс отображения будет наследован от класса СRecordView, а класс результирующего набора – от класса CRecordset.

Созданное AppWizard приложение будет содержать панель инструментов с кнопками для перехода между записями таблицы базы данных, но не будет содержать элементов управления для отображения полей таблицы базы данных.

Мастер MFC Application Wizard создает в классе, наследуемом от CRecordset, переменные члены класса для каждого поля таблицы подключаемой базы данных.

Для того чтобы отобразить в форме поля базы данных, следует:

  1. Расположить в редакторе ресурсов для каждого поля таблицы соответствующий ему элемент управления.
  2. Вставить в метод DoDataExchange класса отображения вызовы методов DDX_FieldText (или DDX_FieldCheck, DDX_FieldRadio, DDX_FieldSlider и т.п.), выполняющие связь между идентификатором ресурса и переменной – членом класса результирующего набора.

    Например:

    void CP2View::DoDataExchange(CDataExchange* pDX)
    {
    CRecordView::DoDataExchange(pDX);
    DDX_FieldText(pDX, 
    	      IDC_EDIT1, // Идентификатор ресурса
     	      m_pSet->m_f1, // Переменная — член 
     			   // класса, наследуемого 
     	    		   // от CRecordset
    		m_pSet); // Член класса, наследуемого 
                    // от CRecordView:   CP2Set* m_pSet;
                    // Член класса, наследуемого от 
                    // CDocument: CP2Set m_P2Set;
                    // Метод OnInitialUpdate класса  
                    // наследуемого от CRecordView :
                    // CDocument: CP2Set m_P2Set;
                    // m_pSet = &GetDocument()->m_P2Set;
    	DDX_FieldText(pDX, 
     		IDC_EDIT2, 
    		m_pSet->m_f2, 
    		m_pSet);
    }

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

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >