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

1 ... 70 71 72 [ 73 ] 74 75 76 ... 141


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

редавая ему в качестве параметра уникальный глобальный идентификатор объекта ADODB: .. Этот идентификатор извлекается из файла

Msado20.tli, определенным в Microsoft Visual С++, при помощи

. . .: С + + .

Результат выполнения метода Createlnstance записывается в переменную hr типа HRESULT. Для проверки успеха завершения операции Вы должны использовать макрос SUCCEEDED, например:

if(ISUCCEED£D{nS) return;

Лд<ч1!. если операция завершилась с ошибкой, выполняется выход из функции установки связи с источником данных.

Теперь, когда объект Connection успешно создан, можно открывать канал связи методом Open:

bstr t

i)St

bstr t

beUserPH,

Здесь мы передаем методу Open имя источника данных, имя и пароль пользователя, а также лньолнительмый параметр, - режим открытия (синхронный или асинхронный). Константа - - ied определяет синхронный режим, установленный по умолчанию. Асинхронный режим (задается константой aclAsyncConnec:} в нашей книге рассматривается.

В процессе открытия канала связи г и данных могут возникать

ошибки, исключения. Обработка этих исключений рассмотрена

ниже.

Обращаем Ваше внимание на класс Он становится доступным в ре-

зультате выполнения импорта библиотеки типов и помогает работать с типом данных BSTR. Тип BSTR используется в программировании элементов СОМ для информации в виде текстовых строк Unicode. Класс b8tr t облегчает создание таких строк и выполнение над ними операций.

После завершения операций необходимо закрыть соединение с источником данных, вызвав метод Close:

Выполнение команды

Для того чтобы выполнить команду, пользуясь установленным соединением с источником данных, необходимо вызвать метод Execute:

from ir-anaoers ); rs = NOLL;

rs = , lisslae. .abCiOB::aaCmdTeat):

В качестве первого параметра мы передаем методу Exeaate строку команды. Как Вы помните, это может быть оператор языка SQE, имя хранимой imcaicaiy



ры или имя таблицы базы данных. В нашем случае выполняется оператор SELECT, выбирающий все данные из таблицы managers.

Второй параметр метода Execute определяет параметры команды. В нашем случае параметры не используется, поэтому ; мы указываем специальное значение vtHissing, отсутствующий параметр.

И наконец, третий . : . метода Execute указан как константа ADCI03; ; ad-CiclText, Эта константа определяет, что в первом параметре мы передали методу Execute строку SQE (а не имя хранимой процедуры или таблицы).

После выполнения метод Execute возвращает указатель на интерфейс набора записей ADODB: - Набор записей представляет собой таблицу, созданную в результате выполнения команды.

Работаснаборомзаписей

Извлечение отдельных записей из набора необходимо выполнять в цикле. Здесь используется техника, аналогичная той, что применялась нами в сценариях JScript.

Для проверки условия завершения цикла программа должна анализировать содержимое свойство EOF объекта Recordset:

whilsCrs-->adocOF == vmikWTJALSi) I

Здесь мы, однако, ссылаемся не на свойство EOF, а на переименованное при импорте библиотеки типов ADO свойство adoEOF. При достижении конца набора записей это свойство будет содержать значение VARIANT FALSE.

Извлечение содержимого полей набора записей выполняется следующим образом:

variant t

vManagerlD = :. . . ..- . - : ))->aa1,iie;

vNai = aiaa;

Здесь мы ссылаемся на элемент набора Fields при помощи метода Getlteia. передавая ему в качестве имя столбца, в котором находится нужное

нам поле (можно также задавать номер столбца, начиная с нуля).

После извлечения очередной записи надо передвинуть курсор на следующую запись набора Recordset, вызвав для этого методМоуеКехГ:

hr = re->l*lovelextC 5; ifC!SlJCCEt[>EO(hr)) break;

Извлеченные значения размещаются в переменных класса Далее

мы расскажем о ro.va как выполнить из этого типа в более при-

вычные числовые и строчные типы данных.

Завершив операции над набором записей : его следует закрыть при

помощи метода Close: rs->Close();



Здесь мы вначале переменную vName из обычной текстовой

строки закрытой. нулем, азатем присваиваем ее значение свой-

ству .. Далее параметр добавляется в набор параметров методом

Append.

Вызов хранимой процедуры

В этом разделе мы рассмотрим способ вызова хранимой процедуры с параметрами. Как мы уже говорили, использование хранимых процедур позволяет отделить данные от программ, что упрощает их создание и отладку.

Чтобы передать хранимой процедуре Вы должны вначале создать

объект класса Command . . а затем при помощи метода . . : . определить net необходимые

Создание объекта Command выполняется так: л: . . . = NULL;

Далее надо команду к каналу с набором данных, устано-

вив значение свойства ActiveConnection:

Так как команда выполняет вызов хранимой процедуры, в свойство Command-Type следует записать значение ADODB:

В свойство ConnaiiclText Вы должны записать имя хранимой процедуры (как переменную класса L>atrL): bstr t

; займемся параметрами команды. Вначале определим указатель на параметр как объект класса AOODB; : Рага-

rpr.ai = NULL;

Теперь мы создаем сам параметр, указывая его ам;а тип, значение и размер данных:

bstr t

param =- cmd->CreateParameter( -1, vtMissing);

Здесь имя параметра задано как User. Константа ADODB; : adVarChar определяет, что параметр является текстовой строкой. С помощью константы ADODB: : ad-Paaanrnput мы указываем, что данный параметр - входной. Четвертый параметр метода CreateParameter указывает максимальный размер данных как -1, что означает отсутствие ограничений на этот размер. И накиие:!. последний параметр, . значениепараметра, указан как vtMissing (то есть.

Действительное значение входного параметра с именем User мы задаем при помощи метода Append: variant t



1 ... 70 71 72 [ 73 ] 74 75 76 ... 141

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