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 - выполняет изменения в наборе рядов (вносит изменения, добавляет новые ряды, удаляет ряды и т. д.);