|
Программирование >> Руководство по созданию web приложений
Для чего Вам могут потребоваться приложения С++, обращающиеся к базам данных посредством ADO? Если речь идет о приложениях для Интернета, то это нужно, прежде всего, для связи программных расширений сервера Web, таких, как программы CGI или ISAPI, с базами данных. Кроме того, иногда надо расширить объектную модель ASP, добавив собственные элементы ActiveX, обращающиеся к базам данных. Разработчик приложения может работать с ADO тремя различными способами: ф непосредственно вызывая интерфейсы и методы ADO с помощью функций программного интерфейса Win32, предназначенных для работы с СОМ; ф применяя средства библиотеки MFC, созданных для ОЕЕ; ф импортируя библиотеки типов ADO с помощью оператора ftimport. Первый из этих способов предполагает детальное знакомство программиста с методикой применения технологии СОМ. В частности, необходимо следить за использованием указателей на интерфейсы, своевременно захватывая их и освобождая при помощи методов AcJciBef и Release, а для создания объектов ADO приходится -,. - явным образом функцию CoCreatelnstance. Второй способ, ориентированный на применение MFC ОЕЕ, упрощает работу с ADO посредством . (wrapper class). Недостатки данного спо- соба - невозможность использования перечислимых типов данных из библиотеки типов ADO, а также необходимость поставлять вместе с программой библиотеку динамической загрузки MFC DEE. И наконец, третий способ, осиованный на включении библиотеки типов ADO оператором ttimport, предполагает создание вспомогательных классов-оболочек, а также автоматическую генерацию перечислимых типов и глобальных уникальных идентификаторов (УСН) объектов ADO. Этот способ, на наш взгляд, наиболее удобен, так как делает использование ADO в программах С++ yi.i.iiMapai! таким же простым, как и в сценариях JScript и V!! Script. Одно из важных преимуществ применения оператора tfimport заключается в использовании так называемых ичтсч-н-ктцальныхуказателей (апиП pointer) класса comptrt, а также классов для работы с типами данных BSTR и VARIANT. Интеллектуальные указатели позволяют не беспокоиться о и вызо- ве методов Oaerylaterface. AddRef и Release, упрощая работу с указателями на интерфейсы СОМ. Еще одна особенность, связанная с оператором ftimport - обработка ошибок при помощи исключений. Как известно, применение исключений для обработки ошибок вместо проверки кодов возврата сокращают объем листингов исходного текста приложений, упрощают разработку и отладку .: . Когда при создании объектов ADO или при выполнении методов ADO происходят ошибки, возникает исключение класса .caierraia Этот вспомогательный класс упрощает обработку ошибок, так как сам вызывает методы интерфейса lErrorlafo, Импортирование библиотеки типов ADO Ранее мы у а пользовались технологией импортирования библиотеки типов ADO, создавая . - ASP. Вспомните, что для каждого такого ния мы создавали файл с именем : располагая его в корне виртуально- I Daliug Рис. 4-44. Добавление пути к каталогу с библиотекой типов ADO го каталога приложения. В области этого файла мы делали ссылку на библиотеку типов ADO следующего вида: <!- METADATA FTI,£ = - , : ; , tlb -> Что же касается программ то для импортирования библиотеки типов необходимо воспользоваться оператором ffimport, расположив его в области - ; исходного текста программы; ..... fi .:0.tlb- Наиболее . место для расположения этого файла - файл StdAfx.b, создаваемый автоматически системой разработки Microsoft VLshuI С++ и содержащий различные ы. Разумеется, Вы включать оператор tfimport к файлы срр, содержащие обращения к ADO. Как работает оператор tfimport? Когда компилятор встречает такой оператор, ссылающийся на ту или иную библиотеку он генерирует ,i. i; каждой библиотеки два текстовых файла с-. .. 11ll и tli. Например, при импортировании библиотеки ти- пов ADO версии 2.0 создаются файлы с . и Msado20.tli. Эти файлы создаются в каталоге с исходными текстами проекта Влит о приложения. Файл содержит определения объектов и перечислимых типов а файл - классы-оболочки для методов объектной модели ADO. Вы можете просмотреть их содержимое при помощи любого текстового редактора, например в окне редактирования Microsoft Visual С++. Если Вам не нравится размещать в исходном тексте программы абсолютные ссылки iia файлы библиотек типов, можно другим вариантом вызова оператора flimport: tfimport <isadQ20.tlb> Нри этом, однако, необходимо, чтобы полный путь к каталогу, содержащему библиотеку II!ааа., (в нагнем случае это был прописан в переменной среды LIB, PATH или INCLUDE. Есть и другая возможность - добавить этот путь в список каталогов Visual С++ на вкладке Directories панели Options, вызвав ее па экран при помощи строки Options меню Tools (рис. 4-44). После импортирования библиотеки типов ушлшчтт выше способом может возникнуть проблема с константой EOF, определенной как значение -1. Эта константа обычно используется при работе с потоками ввода/вывода, однако как Вы скоро убедитесь, в ADO ей уготовано и иное npimvumw:-. Чтобы избежать конфликта имен, мы переименуем EOF из библиотеки типов ADO в adoEOF как это показано ниже: liBport я:\ргодг8в f 11 евХсоРКО.о i:9S\systei\3do\Ms8£lfl20.tlb \ rename ( EOF , adoEOF ) Обращение к интерфейсам и методам ADO Прежде привести полные исходные тексты приложения, написанного на С++ и обращающегося к базе данных средствами ADO, рассмотрим основные приемы обращения к интерфейсам и методам основанные на использова- ii11ii оператора - -Инициализация Автономное .: . . работающее с объектами ADO, должно до начала своей работы выполнить .- % - системы СОМ вызовом функции Colnl-tialize. Перед завершением работы приложению необходимо освободить ресурсы, связанные с системой СОМ, при помощи функции OoUninltlal Конечно, эти функции допустимо вызывать явным образом, однако определить глобальную структуру с конструктором и деструктором, выполняющую указанные действия: struct с . CofInlt() { CoIiititllie(NULL); lirltialiiSO; Установка ещшнеии с источником данных Прежде чем обращаться к базе данных, приложение должно установить соединение с источником данных. Для этого потребуется объект Connection. В следующем фрагменте кода мы создаем объект Connection и записываем в переменную с именем си указатель на интерфейс объекта: , = NULL; . uOla(ifCAIlOriB: :Connection)); Обратите внимание на то, как мы объявляем сп. Здесь мы ссы- лаемся на пространство имен - . определенное в результате импорта библиотеки типов ADO оператором . Тип ConnectionPtr определен какуказа-тель наинтерфейсо бъекта Connection.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |