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

1 ... 74 75 76 [ 77 ] 78 79 80 ... 141


-А приложений с базами данных через 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;



1 ... 74 75 76 [ 77 ] 78 79 80 ... 141

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