|
Программирование >> Руководство по созданию web приложений
В этом цикле мы можем ссылаться как на массив 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 и получает на со- интерфейс:
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |