Программирование >>  Руководство по созданию web приложений 

1 ... 84 85 86 [ 87 ] 88 89 90 ... 141


В этом цикле мы можем ссылаться как на массив pColInfo, содержащий полную информацию о столбцах (имя столбца, тип данных и т. д.), а также на массив значений pFiowValues,

По завершении обработки набора записей Ваша программа должна освободить объект привязки и указатель на интерфейс lAeaessor; - . а . . ULL};

Первая операция выполняется с помощью метода RaleasaAccesaor. а вторая - методом Release.

Программа OLEDB

в качестве примера программы, написанной на языке С++ и обращающейся к базе данных средствами OLE DB, приведем исходные тексты простой утилиты OLEDB, отображающей на консольном экране информацию из таблицы посе-clients нашего Интернет-магазина. Программа получает из базы данных и выводит на экран идентификатор записи покупателя, его имя, пароль, дату регистрации и электронный почтовый адрес E-Mail;

1 frolov 123 01.12.1999 20:23:42 10 petrov 111 05.12.1999 12:02:12 12 sidorov 1aa 06.12.1999 13:14:44

Полные исходные тексты утилиты OLEDB приведены в листинге 5-1.

Листинг 5-1 Вы найдете в файле ch5\oledb\oledb.cpp на прилагаемом к книге компакт-диске.

Рассмотрим эти исходные тексты в деталях.

Глобальные определения

в самом начале файла исходных текстов мы определили несколько

макросов и включили некоторые ,ii

Для того чтобы все строки и символы представлялись в кодировке UNL CODE, мы ввели следующие определения: UNICODE

Инициализация констант OLE DB выполняется при помощи определения макроса DBllITCONSIAHTS define DBINITCONSTANTS

И наконец, для работы с глобальными уникальными идентификаторами в приложении определен макрос INITGUID: Idefiae INITGUID

pColInfoCnCurrentColl.wType

Данные из текущего поля

pHowValyes[pDBIJnd[nCurrentCol]. obfalye]



...LJ:

До начала работы выполняется .: СОМ методом iize.

а до ее завершения - in СОМ методом CoUninitialize,

В области глобальных мы также определили три указателя на

интерфейсы IMalloc, IDBInitialize и IRowset:

Malloc-. pMilloo = NULL;

IDBInitialize* pIDBInitialize = NULL; IRowset* pIBowset = NULL;

Первый из них используется для памятью, второй - для иници-

ализации объекта провайдера источника а третий - для работы с извле-

ченным набором записей.

Функция main

Исходный текст . : : получающей управление при програм-

мы, представлен ниже:

агдс, TCHAR* argv[J, TCHAR* eovoLj)

get records();

else

Помимо обычных ддя приложений Windows файлов

и мы включили в исходный текст файлы . msdaguid.li

flinclude

<msdasql.h>

Файлы oledb.li и oledberr.li для определений и ин-

терфейсов OLE DB, а файлы msdaguid.li и msdasql.h относятся к провайдеру ODBC, использованному нами для создания источникаданных.

Для инициализации системы СОМ перед началом работы программы и для освобождения ресурсов СОМ перед завершением программы мы определили в области глобальных переменных уже знакомую Вам П предыдущей главе переменную к)1...init класса Comlnit: struct Comlnit



!= NULL)

!= NULL)

return 0;

В начале своей работы функция main выполняет инициализацию источника данных, вызывая для этого функцию init, определенную в нашей программе. Если инициализация успешно, main запускает команду,

из таблицы clients о , : : . В том случае,

если команда выполнена без ошибок, функция . извле-

кающая или отображающая в консольном строки таблицы clients.

При каких-либо ошибок в работе программы main

освобождает указатели на интерфейсы IMalloc, IDBInitiali/c и Пред-

варительно она убеждается в том, что указатели не содержат нулевые значения. Перед указателя па интерфейс мы вызываем ме-

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

Функция init

Перед тем как приступить к инициализации источника данных, функция init получает для системы СОМ, вызывая для этого функцию

return false;

В результате в глобальную переменную i записывается указатель на

интерфейс системы управления памятью СОМ. может использо-

вать этот указатель для вызова методов интерфейса IMalloc, таких, как . Нос, Realloc, Free и т. д. Память, полученная таким образом, применяется в многопоточной среде.

Паша программа заказывает неявно, обращаясь к интерфейсам OLE

DB, однако, прежде чем работу, функция getrecords вызывает .-.а

тод Free . IMalloc для . заказанной для описа-

ния столбцов набора записей.

Дальнейшие функцией init, мы описали

в начале этой

Вначале функция создает объект IDBInitialize и получает на со-

интерфейс:



1 ... 84 85 86 [ 87 ] 88 89 90 ... 141

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика