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

1 ... 80 81 82 [ 83 ] 84 85 86 ... 141


hr = pIIIBCreateSes3,leaaCreateSe33aaa;miL., ilCJaBCreateiieaaaac!.

Если новый сеанс создается в рамках объекта, через первый

параметр методу CreateSession передается указатель на управляющий интерфейс lUnknewa, Если же сеанс не является составной частью агрегированного объекта (как в нашем случае). Вы штиле указать здесь значение NULL.

Второй параметр метода CreateSession предназначен для передачи идентификатора интерфейса. При создании сеанса мы получаем интерфейс, средствами которого можно создавать команды. Идентификатор этого а!Г1ерфанаа задается константой 1;

И наконец, через третий параметр методу CreateSession передается адрес в которой будет указатель на интерфейс создания команд.

После получения интерфейса создания команд IDBCteateCommand мы дим ненужный нам более указатель на интерфейс IDBCreateSession с помощью метода Release: Bl08areaaeSeaa-i on->ii laase{ j;

Объект Command

Объект Command необходим для выдачи команд. Он создается при помощи ма т-да Ш BCreateCommand.

Создание

Пиже показан фрагмент кода, создающего объект Command:

Объект Session

Прежде чем команды, нам необходимо создать сеанс как объект Ses-

sion. Этот объект обеспечивает для создания команд, наборов записей,

для создания и изменения таблиц и индексов. Он также применяется для пост-1.1 HI объектов . в этой книге мы этот случай не рассматри-

ваем.

Для создания объекта Session нужно получить указатель на интерфейс IDBCreateSession. Для этого метод Uuer у1г-1егГасвинтерфейса

IPBIiiitial вызвав его , образом:

IDBCreateSession*

piOBIaitiai .

(vaitJo* а :

В качестве первого параметра мы передаем методу Querylnterface идентификатор интерфейса! DB Create Session ввиде ко нстантыПВШВ CreateSession. В случае успеха метол ryi указатель на :

IDB Create Session в переменную, расположенную поадресу, заданномувторым параметром. В -а случае указатель на интерфейс ЮВСаи . : . будет храниться в переменной pIDBCreateSession типа IDBCreateSession*.

С помощью интерфейса IDBCreateSession и метода CreateSession мы создаем сеанс:



ICommandText* p,IConianclTixt;

hr = piDIJCreateCoii;iana->CreateCoMiiarid(NULl. riD ICaBraadText,

Рассмотрим параметры использованного метода : а

параметр предназначен для передачи управляющего интерфейса lUnknown при агрегации. Мы пе применяем агрегацию, поэтому указываем здесь - NULL.

Через второй параметр передается идентификатор интерфейса ICommandText, необходимого для определения атитщ.

Третий параметр передает указатель па переменную, в которую будет записан указатель патолькочтоу помянутый интерфейс ICommandText.

После успещпого получен ияуказатель па интерфейс ICommandText мы можем освободить указатель па интерфейс . . который больще пе

потребуется:

pIDBCiataCemiand-adeltaaaf):

Эта операция выполняется как обычно, при помощи метода Release.

Определение команды

Для определения комапдымы используем метод SetCommandText

ICommandText:

LPCTSTR ... . .. =

ClientID, : Password, RegisterDate, Email FROM alienta);

wSQLString);

ПepвыйпapaмeтpмeтoдaSetCommandText синтаксис команды и

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

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

Если первый параметр метода SetCOni задан g виде константы

DBGUIO SQL (как в пащем . ... то команда ; : в соответствии

с правилами языка SQL.

В том случае, когда этот параметр : как DBGUID DEFAULT, .; .

способом, заданным для провайдера источника данных по умолчанию. В частности, провайдер OLE DB может по умолчанию выполнять команды, пе имеющие к SQL.

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

После определения команды можно отправить ее па выполнение при помощи метода Execute интерфейса ICommandText: LONG .

= .... NULL,

Первый параметр . Execute используется для агрегирования. Мы зада-

ем его в виде константы NULL.

Второй параметр задает интерфейса IRPwset. необходимого

для извлечения результата работы команды в виде набора записей. Метод Execute записывает указатель па интерфейс IRowset в переменную, адрес которой определен в последнем параметре.



Указательнаинтерфейс1 Coluransinf оизвлекаетсяспомощьюметода9иегу-Interface. первый параметр мы передаем этому методу идентификатор

IColuransInfoB виде константы IIDIColuransInfo , а через второй параметр - указатель на переменную, в которую будет записан указатель на интерфейс

Далее мы вызовем метод Get С о1ишп1пТо интерфейса 1С oluransinf о:

Третий на структуру DBPARAMS,

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

Через четвертый параметр методу Execute . указательна

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

Например, при создании набора записей в нения команды SELECT в эту . будет записано количество строк в

наборе записей.

После выполнения команды мы должны освободить указатель на интерфейс . вызвав метод Release:

Интерфейс IRowset и набор записей

Как мы только что в результате выполнения методом Execute

мы получаем указатель на интерфейс IRowset. Этот интерфейс ; для

извлечения результатов выполнения команды, то есть для извлечения данных из полей строк набора записей, созданного командой. Помимо этого интерфейса, нам потребуются и

Для извлечения данных из записей нам предстоит выполнить следу-

ющие

4 получить описание столбов набора записей при помощи метода интерфейса

I выполнить привязку данных набора к переменным программы с помощью мeтoдaCreateAccessorинтepфeйcalAccessor;

идентификаторы строк набора методом . s интерфейса

IRowsci;

из полей строк методом GetData интерфейса IRowset. Рассмотрим ЭТ1К

Получение набора записей

На первом обработки набора записей нам нужно получить описание стол-

бцов вызвав мeтoдGetColuшnlnf о IColuransInfo.

Для этого мы вначале получим указатель на интерфейс ICclusriSlnfo. воспользовавшись для этого указателем на который стал доступным после команды:



1 ... 80 81 82 [ 83 ] 84 85 86 ... 141

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