|
Программирование >> Руководство по созданию web приложений
При создании выходного параметра мы используем константу 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 С++, мы не будем приводить ради экономии места. В этот файл
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |