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

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


При создании выходного параметра мы используем константу AD0D3: : adPa

liOytauT

bstr t о param =

э : АООЮ: ;adPa-aBOutput,

16, vtMissing); ipara =

Далее команда выполняется (в нашем случае происходит запуск хранимой процедуры):

.StoredProc);

После ее . . параметра можно взять из свойства

ок = а.- -

Обработка ошибок

В начале этой главы мы рассказывали о том, как выполняется обработка ошп бок, возникающих при использовании объектов ADO. Как Вы знаете, ошибки попадают в ADO от . и помещаются в набор Errors, причем в резуль-

тате - - ; одной команды может возникать сразу несколько ошибок. Для каждой ошибки создается объект который затем помещается в набор

Errors.

Серверным JScript - - только два свойства объекта Error

number и description, первое из которых содержит числовой код ошибки, а тч-рое - ее текстовое описание.

Программы С++ (так же как сцеиарий VB Script и программы, иаписанные на языке Microsoft Visual Basic) получают доступ ко всем свойствам объекта Error, перечисленным в таблице 4-4. Это Description (текст сообщения об ошибке). Number (код ошибки), Saaraa (объект, вызвавший появление - -

об ошибке от источникаданных SQL), NativeError (аналогично SQLState), HelpFile (ссылка на файл справочной системы с объяснением ошибки) и HelpContext (идентификатор справочной системы с описанием ошибки).

Если программа С++ обращается к объектам ADO с применением импортирования библиотеки типов ADO посредством оператора tfimport, то при возникновении ошибочной ситуации возникает исключение класса со вггог. Мы обрабатываем его с : конструкции try-catch следующего вида:

Второй входной параметр добавляется аналогично:



return;

Обработка огпибок выполняется функцией . : -! которой в качестве параметра сп передается указатель на I - Connection.

В начале работы функция AdobrrHandler получает набор Errors, содер-

жащий объекты Error, создаваемые для каждой ошибки: тот: Errors = NULL;

ErrorS= jrsC):

Этот набор, извлекаемый средствами метода GetErrors, мы будем обрабатывать в цикле, так как объектов Error может быть создано несколько. Для деления количества элементов в Errors метод

long nErrCount;

Далее извлечение объектов Error можно , следующим образом:

Error = NULL; i = 0; i < nErrCount; \++)

Error = Error = NULL;

Здесь переменная цикла i принимает значения от О до числа элементов в наборе Errors. С метода Bftltem мы по очереди извлекаем ... на интерфейсы объектов Errors, сохраняя их в переменной Error типа ADODB: : rorPtr. После использования указатель Error освобождается методом Release, Затем мы присваиваем ему значение NULL.

Теперь для каждой ошибки (то есть для каждого извлеченного объекта Error) мы . ы получить значения свойств. Эта операция выполняется с использо-методов, предусмотренных в объекте Error:

CString

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

текстовую строку и записали в строчную переменную strNumbe г класса CString.



Аналогичные действия можно Error:

и для других свойств объекта

sTrSoiirce. Fo fiat ( Source: la , I. L Pa I a i a) ....ust r ac (t г .O f - a as

atrl

irb .. : a:

Strli : ...... i :, , . :i

StrE

Полный текст функции обработки ошибок AdoErrHaacllar приведен в лис-. 4-57.

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

в качестве примера приложения, написанного на С++ и обращающегося к ADO с применением импортирования библиотеки типов ADO, рассмотрим простую консольную программу просмотра записей таблицы managers из базы данных Bookstore. Эту базу мы создали в начале главы.

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

Login name: frolov Password: 123

Manager Hst:

frolov Petrov Sidoroff

[TestAdwiaa adrflin

123 123 123

1234 123

Administrator

sajanapr Salea.aanagar 8а1вз шаааввг Salesjnanager

11.12.99 12:24:50 NULL NULL NULL

05.12.99 09:50:10

Если же идентификатор или пароль введены неправильно либо если данный пользователь не обладает правами администратора, то на консоли появляется лишь сообщение о запрете доступа:

Login name: frolov Password: 111

Access denied

Рассмотрим исходные тексты программы.

Листинг файла создаваемого автоматически системой разработки

Microsoft Visual С++, мы не будем приводить ради экономии места. В этот файл



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

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