yandex rtb 1
ГоловнаЗворотній зв'язок
yande share
Главная->Різні конспекти лекцій->Содержание->3.2.2 Створення результуючого набору

Організація баз даних і знань

3.2.2 Створення результуючого набору

При реалізації доступу до БД за допомогою OLE DB провайдера спочатку варто створити об'єкт даних й установити з'єднання з БД. Далі необхідно створити об'єкт "сеанс". І тільки потім можна створювати результуючий набір.

Механізм створення об'єкта "сеанс" наведений на схемі (рис. 3.3).

 

 

 

Рисунок 3.3 – Схема механізму створення об’єкта «сеанс»

 

Результуючий набір може бути створений одним із таких способів:

Для об'єкта "сеанс" викликається метод IOpenRowset::OpenRowset, що виконує безпосереднє створення результуючого набору (інтерфейс IOpenRowset повинен підтримуватися будь-яким провайдером);

Для об'єкта "сеанс" викликається метод IDBCreateCommand::CreateCommand, що створює об'єкт Command. Далі для об'єкта "команда" викликається метод ICommand::Execute. (при використанні інтерфейсу IMultipleResults можна працювати з декількома результуючими наборами);

Викликається один із наступних методів IColumnsRowset::GetColumnsRowset, IDBSchemaRowset::GetRowset, IViewRowset::OpenViewRowset або ISourcesRowset::GetSourcesRowset.

Щоб результуючий набір, збережений на сервері, можна було використовувати, необхідно виконати зв'язування й добування даних. Для цього слід визначити структури типу DBBINDING, що описують стовпці, і створити аксесор. Далі для одержання рядків результуючого набору можна використати один з наступних методів:

IRowset::GetNextRows;

IRowsetLocate::GetRowsByBookMarks;

IRowsetLocate::GetRowAt;

IRowsetScroll:: GetRowAtRatio.

На закінчення для запису даних у структуру, визначену аксесором, викликається метод IRowset::GetData.

Після одержання й обробки рядків їх варто звільнити, викликавши метод IRowset::ReleaseRows.

Після перегляду всього результуючого набору слід також звільнити аксесор, викликавши метод IRowset::ReleaseAccessor, і звільнити сам результуючий набір, викликавши метод IRowset::Release.

Інтерфейс IAccessor визначає такі методи:

AddRefAccessor - збільшує число посилань на даний аксесор;

CreateAccessor - створює аксесор з набору зв'язувань;

GetBindings - повертає зв'язування, установлені даним аксесором;

ReleaseAccessor - звільняє аксесор.

Об'єкт Command повинен реалізовувати такі інтерфейси:

Icommand;

Iaccessor;

IcommandText;

IcolumnInfo;

ICommandProperties.

Для створення команди викликається метод IDBCreateCommand::CreateCommand об'єкта "сеанс".

Алгоритм виконання команди наведений на схемі (рис. 3.4).

 

33