Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Visual2.doc
Скачиваний:
5
Добавлен:
07.03.2016
Размер:
3.31 Mб
Скачать

Контрольні питання

1. Яке призначення функцій AfxRegisterClass та AfxRegisterWndClass?

2. Яке призначення структури WNDCLASS?

3. Призначення константи AFX_IDW_PANE_FIRST при створенні дочірнього вікна.

4. Що функція SetDlgCtrlID дозволяє робити з дочірніми вікнами?

5. Для чого використовується строковий ресурс IDR_MAINFRAME?

6. Яке призначення функції GetActiveView?

7. Яке призначення функції GetActiveDocument?

8. Що роблять функції із класу документа AddView та RemoveView?

9. Призначення функції SetActiveView.

10. Яке призначення функцій GetFirstDocTemplatePosition та GetNextDocTemplate?

Розділ 10. Робота з базами даних з використанням об'єктів ado

10.1. Використання об'єктів ADO в Visual C++

В основі ADO лежить інтерфейс Common Object Model (COM). Це дозволяє використовувати об'єкти ADO в широкому спектрі різних програмних середовищ, включаючи Visual Basic, VBScript, а також Visual C++.

ADO містить тільки опис різних використовуваних об'єктів і не забезпечує їх спеціальною реалізацією. Проте компанія Microsoft включила реалізацію ADO для доступу до будь-яких наявних джерел даних OLE DB. Реалізація (провайдер) ADO для OLE DB отримала назву ADODB. Крім того, ADODB може забезпечити доступ до будь-яких наявних джерел даних ODBC. Реалізація (провайдер) ADO для ODBC отримала назву MSDASQL. Обидві реалізації (підключення до джерел даних) будуть розглянуті в даному розділі.

У цьому розділі розглядаються основні принципи використання ADO в додатках C++, а також специфіка виконання операцій з базами даних.

10.1.1. Ініціалізація об'єктів com з використанням директиви #import

Однією з найбільш важливих особливостей є директива препроцесора #import, яка при підключенні автоматично створює два файли msado15.tlh, msado15.tli, які генеруються у вихідному каталозі проекту і відповідно містять опис (хайдер) і реалізацію (бібліотеку) класів COM.

Директиву #import можна включати в файл заголовка stdafx.h або в поточний файл .cpp, де використовується база даних. Приклад підключення директиви #import і хайдера msado15.tlh:

#import "c:\Program Files\Common Files\System\ADO\msado15.dll" rename("EOF", "ADO_EOF")

#include "msado15.tlh"

using namespace ADODB;

Директива #import створює класи із бібліотеки типів MSADO15.DLL, яка встановлюється разом з ADO. Шлях до бібліотеки може бути різним, залежно від способу установки. Тут необхідний оператор rename, оскільки бібліотека типів ADO перевизначає константу EOF, визначену у файлах stdio.h, ios.h і stream.h, включених до afxwin.h. Таким чином, скрізь, де документація ADO вказує на необхідність використання EOF, слід застосовувати ADO_EOF. Потім підключається заголовок "msado15.tlh" і вказується область його використання ADODB.

Директиву #import слід застосувати тільки один раз (у даному разі, перші два рядки), щоб у поточному каталозі отримати файли msado15.tlh і msado15.tli. У подальшому для роботи з ADO, в тому числі і при роботі з іншими додатками достатньо скопіювати ці файли у поточну або в окрему папку. Для подальшої роботи з ADO необхідно підключити тільки файл msado15.tlh (3-й і 4-й рядки) з виділенням відповідної області ADODB.

Коли використовувалася директива #import, у файлі msado15.tlh автоматично формувався рядок підключення бібліотеки msado15.tli:

#include "c:\vccp\ado\msado15.tli"

Якщо обидва файли знаходяться в поточній папці, то заголовочний файл підключається, так:

#include "msado15.tlh"

а в кінці файлу msado15.tlh слід зазначити рядок:

#include "msado15.tli"

У тому випадку, якщо обидва файли знаходяться в окремій папці, скажімо d:\ado1, тоді заголовок підключається, як:

#include "d:\ado1\msado15.tlh", а в кінці файлу msado15.tlh слід зазначити рядок:

#include "d:\ado1\msado15.tli"

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]