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

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


Чтобы перейти к обработке следующей записи набора, мы вызываем метод MoveNext:

break;

Заметим, что отсутствие исключений заставляет нас проверку

кода заверщения вызываемого метода, что увеличивает объем листинга.

Пример программы

в этом разделе мы приведем несложный пример программы, обращающейся к ADO без : - библиотеки типов. Эта так же как и пре-

дыдущая, показывает в консольном окне содержимое таблицы сотрудников managers. Для сокращения листинга мы не стали проверять идентификатор и пароль пользователя, . : эту программу.

Исходный текст программы Вы найдете в листинге 4-60.

Листинг 4-60 хранится в файле ciiai-HPADOIICPPADOI.cpp на прилагаемом к книге компакт-диске.

Переменные strAccessConnect, StrEipty и PtrCcilBapd класса CSt начены для строчных переменных класса BSTR с именами

-и bstrCommand

CString

BSTR bstrAccessConnect;

CString str . BSTR bstrEmpty;

CStriui - * from a

BSTR .

В строке bstrAccessConnect записана строка параметров, необходимых для подключения к источнику данных. Переменная bstrEmpty представляет собой пустую а переменная . содержит строку SQE, с помощью ко-

торой мы получим все записи из таблицы managers.

Кроме того, нам две пустые и vtEmpty2 клас-

са VARIANT:

VARIANT vtEmpty; VARIANT

В области глобальных : нащей программы находится определение

пepeмeннoйcom initклaccaComlnit,пpeднaзнaчeннoйдлявыпoлнeнияиници-ализации переда началом работы программы и для освобождения ресурсов перед ее

struct Comlnit

bstrAccessConnect = . , : ip();



В задачу конструктора класса входит вызов уже знакомой Вам функции а также инициализация перечисленных выше неременных классов BSTR и VARIANT. Деструктор функцию .а .. нри по-

мощи функции SysFreeSt г: -освобождает ресурсы, . - : для строк клас-

са BSTH

Отображение содержимого таблицы выполняется функцией

nagers, получающей управление от функции после запуска нашей иро-

граммыиинициализации библиотеки классов MFC.

it , taaia(iat argc, TCHAR* argv[], TCHAR* еаарП) I

int nRetCode = 0;

.NULL,

cerr инициализации MFC ) <a eacil; nRetCode = 1;

else

getManagersO;

return nRetCode;

В области локальных . - функции : : определены указате-

ли на интерфейсы сп. rs и ...а.

= NULL; rs = NULL; - NULL;

В неременную си записывается указатель на Connection, длячего

используется функция СоС - - - объект указанного класса:

- = S OK;

= - : .... NULL,

bstrEmpty

= VT ERROR;



Если данный объект был успешно создан, мы записываем в свойство Соппес-: объекта Connection строку параметров соединения, вызывая для этого метод . :. . onStSInij

hr=cn->put ConnectionString(bstrAccessConnect);

Далее соединение с источником данных открывается методом Open. Так как все параметры соединения уже записаны в свойство CorinectiOHString мы указываем первые три . . метода Open как пустые, передавая через них строку bstrEmpty:

= cn->Open(bstrEmpty, bstrEmpty, bstrEmpty,

. eel);

Ha этапе происходит создание объекта Command, для чего мы опять

применяем функцию но с другими параметрами. Указательна

интерфейс созданного объекта команд записывается в переменную Cid;

ifCS

hi = . -. \ - NULL,

. ! . (LPV0ID*}bcii3);

Чтобы связать объект Command и соединение, мы записываем указатель на интерфейс соединения в свойство Active Connect ion объекта Connection, вызы-вaямeтoдputref ActiveConnection:

Текст команды записывается методом . . . i . в . .

свойство объекта Command:

ir(SliCCEEOED(hr)}

hr = cmd->put CcMeBii(JTcxt(b8trConnand);

Теперь можно выполнять команду, вызывая метод Execute. В качестве первых двух параметров мы передаем этому методу пустые переменные класса VARIANT. Третий параметр . . ; что необходимо выполнить строку SQE, заданную в свойстве о а . а . объекта Command. И наконец, через i . параметр

методу Execute адрес ; в которую будет записан указатель

аа объект класса . : содержащий набор записей, извлеченных из таблицы managers:

выполнения команды в цикле при помощи рассмотренной ранее методики извлекаются отдельные набора Recordset, и результат выводится на консоль.

Перед запуском цикла мы определяем переменные класса CoIeVariant, в которые будут записаны значения, извлеченные из строк таблицы:

COIeVariant а COIeVariant COIeVariant

COIeVariant vLastLogin; COIeVariant



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

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