|
Программирование >> Руководство по созданию web приложений
Однако простое создание указателя еще не влечет за собой образование объекта. Для того чтобы создать объект, мы метод - - а, пе- редавая ему в качестве параметра уникальный глобальный идентификатор объекта 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
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |