PDBPropInfo = ATDBPropInfо;

DBPROPPNTO = packed record

pwszDescription: PWideChar;
dwPropertylD: DBPROPPD;
dwFlags: DBPROPFLAGS;
vtType: Word;
vValues: OleVariant;
end;
TDBPropInfo = DBPROPPNTO;

Для каждого обязательного параметра в элементе dwFlags устанавливается значение DBPROPFLAGS REQUIRED.

Для инициализации соединения необходимо использовать метод

function Initialize: HResult;
stdcall;

интерфейса iDBinitiaiize объекта-источника данных.

Сессия

Из объекта-источника данных можно создавать объекты-сессии. Для этого используется метод

function CreateSession (const punkOuter: IUnknown;
const riid: TGUID;
out ppDBSession: IUnknown) : HResult;
stdcall;

интерфейса iDBCreateSession. Сессия предназначена для обеспечения работы транзакций и наборов рядов.

Транзакции

Управление транзакциями в OLE DB реализовано на двух уровнях.

Во-первых, всеми необходимыми методами обладает объект сессии. Он имеет интерфейсы ITransaction, ITransactionJoin, ITransactionLocal, ITransactionObj ect.

Внутри сессии транзакция управляется интерфейсами ITransactionLocal, ItransactionSC, ITransaction И ИХ методами StartTransaction, Commit, Rollback.

Во-вторых, для объекта сессии можно создать объект транзакции при помощи метода

function GetTransactionObject(ulTransactionLevel: ШТ\ГГ;
out ppTransactionObject: ZTransaction): HResult;
stdcall;

интерфейса ITransactionOb j ect, который возвращает ссылку на интерфейс объекта-транзакции.

Наборы рядов

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

Объект сессии имеет обязательный интерфейс iOpenRowset с методом

function OpenRowset (const punkOuter: IUnknown; pTablelD: PDBID; plndexID: PDBID; const riid: TGUID; cPropertySets: ЦЖ; rgPropertySets:

ЮВГ-ropSetftrray;
ppRowset: PlUnknown) : HResult;
stdcall;

который открывает необходимый набор рядов.

В зависимости от возможностей источника данных набор рядов может поддерживать различные интерфейсы. Но пять из них являются обязательными:

OlRowset - обеспечивает навигацию по рядам;
□ lAccessor - обеспечивает представление информации о формате рядов, содержащихся в буфере набора рядов;
□ iRowsetinfo - позволяет получить информацию о наборах рядов (например, число рядов или число обновленных рядов);
□ icolumnsinfo - позволяет получить информацию о колонках рядов (наименование, тип данных, возможность обновления и т. д.);

□ iConvertType - содержит единственный метод canConvert, позволяющий определить возможность преобразования типов данных в наборе рядов.

( Примечание )

В отличие от привычной практики разработки интерфейсов в рамках модели СОМ, интерфейсы OLE DB часто имеют всего один-два метода. В результате большая группа интерфейсов реализует несколько вполне стандартных функций.

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

OlRowsetChange - выполняет изменения в наборе рядов (вносит изменения, добавляет новые ряды, удаляет ряды и т. д.);

⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Декабрь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс