|
Программирование >> Руководство по созданию web приложений
-А приложений с базами данных через ADO 223 ресурсов СОМ в конструкторе и деструкторе специального объекта инициализации. Например, для инициализации строки параметров подключения к источни-куданныхмы вначале создаемглобальную переменную strAccessConnectTnna С String и инициализируем ее образом; CString ); Далее в конструкторе глобального объекта . -, мы выделяем па- мять для строки - - . и записываем в нее данные из строки strAc cessConnect: BSTR bstrAccessConnect; bstrAccessConnect = s Con рее t, Ail о Перед . : работы программы деструктор объекта инициализации освобождает связанныесострокойЬ81гАссе88Соппес1: Sa-sFr BfiS ycTiiiiiM соединения с источником данных Для установки соединения с источником данных нам необходимо создать Connection. Таккакмыотказалисьотимпортированиябиблиотеки ADO, нам выполнять эту .. с помощью функции . . : . = NULL; hr = S OK; hr = NULL, Обратите niiiiMaiiiii-, что для определения глобальных уникальных идентификаторов ADO, его классов и констант мы включили в исходный текст нащей программы файлы : аи . Файл должен быть включен толь- ко в один файл Ващего проекта, Создавая объект функция CoCreatelnstance записываетуказатель на - .этого объекта в переменную сп типа ADOCoaneotlun-. Результат выполнения операции сохраняется в переменной аг типа HRESULT. Так как при отказе от импортирования библиотеки типов ADO механизм обработки исклю-; а от объектов ADO не используется, Ваще приложение должно проверять коды заверщения вызываемых и методов. После создания объекта Connection необходимо открыть соединение. Для этого вначале нужно вызвать метод [за , . . :. для записи строки ; .. соединения, а затем вызвать метод Open, ; . в объекте Connection: hr = bstrEmpty, bstrEmpty, Так как все параметры , устанавливаются методом St ring, мы указали для первых трех параметров метода Open пустые значения bst rEmpty. Строка bst - определена как пустая строка: CString BSTR -: . . Последний параметр метода Open задает синхронный режим открытия канала связи с источником данных. Выполнение команды Прежде чем выполнить команду, : программа должна создать объект Command, вызвав для этого функцию СоС . - = NULL; hr = . . - - : : NULL. В случае успеха ссылка на интерфейс команды записывается в iifix-Mriiiiviu cmd типа ADOCommand*. Далее нужно установить связь между командой и каналом связи с источником данных, для которого эта команда будет Эта операция выполняется с применением метода put refActiveC onnection: И наконец, текст . - . записывается методом putCoiManclText hr = .- . - -.. . . .:. .1); В нашем случае будет исполняться выборка всех . из таблицы mana- gers. Переменная bst rCuBia 11С1 содержащая эту команду, инициализируется следующим образом: CString - . - : - * from naaageisl; BSTR bstrCommand; bstrCommand = at гСоаиапа. AllocSyaString!; Теперь мы можем выполнять команду при помощи метода Execute: ADORecordset* rs = NULL; hr = 1 &vtEmpty2, adCmdlext, 4ra): Параметр adCmdText указывает, что команда представляет собой строку про-ара.мма SQE. В результате выполнения команды будет создан записей Recordset, причем указатель на интерфейс соответствующего объекта будет записан в переменную га типаЛВО Recordset*. Работа С набором записей Как обычно, извлечение отдельных записей из набора необходимо выполнять в цикле. . Для проверки условия заверщения цикла программа должна . метод getEOF, определенный в Recordset: По достижении конца набора : ; этот метод вернет значение, равное константе VARIAHT FALSE. Пикл обработки набора записей выглядит, например, так: - == VAMAiTFALSE) hr = rs->get EOF(&bEOF); ifiSUCCEEDEOihr)) break; Здесь мы проверяем содержимое переменной bEOF, хранящей признак достижения конца набора записей, в начале тела цикла, а обновляем его в копне тела цикла после получения и обработки очередной записи. Проверку необходимо выполнить также и перед началом шнсла (если, например, в полученном наборе нет ни одной записи). Извлечение и обработка отдельных записей выполняется следующим образом. Вначале при помощи метода g t Fielcs мы получаем указатель на интерфейс набора Fields: . : adoFields = NULL; dsCiatloFields); - - ..... ) break; Iia .этапе мы вызываем через этот интерфейс методы get Itei и get, Va.l а в для каждого поля .- - записи: В = NULL; . : . -, = NULL; hr = - а IteB{C01eViriaat( Haiiegcr;rO ), break; hr = fldianageaTD-a(jet,VelueCitfMaaagerlt>), l(!SlfCCEEDEDChr)) break; hr = adoFielrt8->getIteii(COlaVa riant( Еавв ), SfidNaae); jf{!SUCCEEDEBChr)) break; hr = fldHBiiia-agal jaaiaefiiviaiie); i-=(!SUCCEEDEO(l-r)) break; Здесь мы извлекли содержимое полей идентификатора сотрудника HanagerlD и его имени Name. а . bEjF = г. л I FALSE;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |