Краткое содержание лекций Тема Механизмы удаленного доступа. Интерфейс odbc icon

Краткое содержание лекций Тема Механизмы удаленного доступа. Интерфейс odbc




Скачать 159.68 Kb.
НазваниеКраткое содержание лекций Тема Механизмы удаленного доступа. Интерфейс odbc
Дата конвертации03.03.2013
Размер159.68 Kb.
ТипКраткое содержание
источник

Краткое содержание лекций

Тема 1. Механизмы удаленного доступа. Интерфейс ODBC.

Архитектура ODBC


Интерфейс ODBC (Open Database Connectivity) был разработан фирмой Microsoft как открытый интерфейс доступа к базам данных, предоставляющий унифицированные средства взаимодействия прикладной программы, называемой клиентом (или приложением-клиентом) с сервером – базой данных.

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

Для взаимодействия с базой данных приложение-клиент вызывает функции интерфейса ODBC, которые реализованы в специальных модулях, называемых ODBC-драйверами.

Архитектура ODBC представляется четырьмя компонентами:

  • Приложение-клиент, выполняющее вызов функций ODBC.

  • Менеджер драйверов, загружающий и освобождающий ODBC-драйверы, требуемые приложениям-клиентам. Менеджер драйверов обрабатывает вызовы ODBC-функций или передает их драйверу.

  • ODBC-драйвер, обрабатывающий вызовы SQL-функций, передавая SQL-серверу выполняемый SQL-оператор, а приложению-клиенту – результат выполнения вызванной функции.

  • ^ Источник данных, определяемый как конкретная локальная или удаленная база данных.

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


Для подключения к SQL-серверу с использованием функций ODBC API первоначально следует создать источник данных DSN, в котором определяется используемое имя источника данных и местоположение базы данных (в зависимости от конкретной БД это может быть имя файла базы данных или имя сервера и имя базы данных).

Создать источник данных можно как программно - вызвав функцию ODBC API, так и интерактивно – используя утилиту ODBC.

DLL-библиотека ODBCCP32.DLL предоставляет функции ODBC API ConfigDSN и SQLConfigDataSource, позволяющие выполнять регистрацию новых источников данных или удалять информацию об источниках данных из реестра Windows.

Все функции ODBC API возвращают значения, называемые кодами возврата. Код возврата определяет, была ли функция выполнена успешно или характеризует тип произошедшей ошибки.

В заголовочном файле sql.h определены существующие коды возврата.
^

Функции ODBC API


В следующей таблице представлен список основных функций ODBC API.

Функция

Описание

^ Соединение с источником данных

SQLAllocHandle

Получает идентификатор (дескриптор) среды, соединения или оператора, или дескриптор приложения.

SQLConnect

Соединение с источником данных по DSN, имени и паролю пользователя.

SQLDriverConnect

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

SQLBrowseConnect

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

^ Получение информации о драйверах и об источниках данных

SQLDataSources


Возвращает список доступных источников данных.

SQLDrivers

Возвращает список установленных драйверов и их атрибуты

SQLGetInfo

Возващвет информацию об указанных драйвере и источнике данных.

SQLGetFunctions

Возврвщает функции, которые поддерживаются используемым драйвером.

SQLGetTypeInfo

Возвращает информацию о поддерживаемых типах данных.

^ Изменение атрибутов драйверов и получение информации об атрибутах драйверов

SQLSetConnectAttr

Устанавливает атрибуты соединения.

SQLGetConnectAttr

Возвращает значение атрибута соединения.

SQLSetEnvAttr

Устанавливает атрибуты среды.

SQLGetEnvAttr

Возвращает значение атрибута среды.

SQLSetStmtAttr

Устанавливает атрибуты оператора.

SQLGetStmtAttr

Возвращает значение атрибута оператора.

^ Изменение полей дескриптора и получение информации о полях дескриптора

SQLGetDescField

Возвращает значение дескриптора одного поля.

SQLGetDescRec

Возвращает значения дескриптора для нескольких полей.

SQLSetDescField

Устанавливает значение дескриптора для одного поля.

SQLSetDescRec

Устанавливает значение дескриптора для нескольких полей.

^ Подготовка SQL-запросов

SQLPrepare

Компилирует SQL-оператор для последующего выполнения.

SQLBindParameter

Связывает буфер с параметрами, используемыми в SQL-операторе.

SQLGetCursorName

Возвращает имя курсора, которое ассоциировано с дескриптором оператора.

SQLSetCursorName

Определяет имя курсора.

SQLSetScrollOptions

Устанавливает опции, которые управляют поведением курсора. В версиях ODBC 2.x и 3.x эта функция заменена функцией SQLSetStmtAttr.

^ Выполнение запросов

SQLExecute

Выполняет откомпилированный SQL-оператор.

SQLExecDirect

Выполняет SQL-оператор.

SQLNativeSql

Возвращает текст SQL-оператора, преобразованного конкретным драйвером, но не выполняет его.

SQLDescribeParam

Возвращает описание параметров, используемых в откомпилированном SQL-операторе.

SQLNumParams

Возвращает число параметров в откомпилированном SQL-операторе.

SQLParamData

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

SQLPutData

Передает часть или все значения параметров.

^ Извлечение результатов и информации о них

SQLRowCount

Возвращает число строк, на которые воздействовал SQL-оператор insert, update или delete.

SQLNumResultCols

Возвращает число столбцов в результирующем наборе.

SQLDescribeCol

Описывает столбец результирующего набора, возвращая имя поля, его тип, размер и т.п.

SQLColAttribute

Возвращает информацию о столбце результирующего набора. В отличие от функции SQLColAttribute позволяет получить более обширную информацию о столбце, включая информацию, определяемую конкретным драйвером.

SQLBindCol

Выполняет связывание буфера приложения-клиента со столбцами результирующего набора.

SQLFetch

Извлекает данные одной следующей строки из результирующего набора, возвращая данные для всех связанных столбцов.

SQLFetchScroll

Извлекает данные одной или нескольких строк из результирующего набора, возвращая данные для всех связанных столбцов. Функция позволяет явно указать какую строку следует извлечь. Данная функция заменила функцию SQLExtendedFetch из ODBC 2.x.

SQLGetData

Извлекает из результирующего набора значение одного столбца одной текущей строки. Для использования этой функции не требуется предварительное связывание столбцов.

SQLSetPos

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

SQLBulkOperations

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


SQLMoreResults

Определяет, есть ли еще следующий результирующий набор, и при его наличии выполняет переход на него.

SQLGetDiagField

Возвращает значение поля записи из структуры диагностической информации, ассоциированной с конкретным дескриптором (среды, соединения, оператора).


SQLGetDiagRec

Возвращает значения нескольких предопределенных полей записи из структуры диагностической информации, ассоциированной с конкретным дескриптором (среды, соединения, оператора).

^ Функции каталога

SQLColumnPrivileges

Возвращает список полей и имеющиеся привилегии для одной или нескольких таблиц.


SQLColumns

Возвращает список имен полей в указанной таблице.

SQLForeignKeys

Возвращает список полей, которые составляют внешние ключи таблицы, если они созданы.

SQLPrimaryKeys

Возвращает список полей, которые составляют первичный ключ таблицы.

SQLProcedureColumns

Возвращает в виде результирующего набора список входных и выходных параметров указанной процедуры.

SQLProcedures

Возвращает список хранимых процедур для подключенного источника данных.

SQLSpecialColumns

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

SQLStatistics

Возвращает информацию о таблице и список индексов, ассоциированных с ней.

SQLTablePrivileges

Возвращает в виде результирующего набора список таблиц и привилегии, назначенные для каждой таблицы.

SQLTables

Возвращает в виде результирующего набора список таблиц, хранимых в указанном источнике данных.

^ Освобождение оператора

SQLFreeStmt

Завершает обработку оператора, удаляет результирующий набор и освобождает все ресурсы, ассоциированные с данным дескриптором оператора.

SQLCloseCursor

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

SQLCancel

Завершает выполнение SQL-оператора, прекращая асинхронное выполнение функции, выполнение функции, требующей данные или функции, выполняемой в другом потоке. В отличие от версии 2.x данная функция не может выполнить освобождение дескриптора оператора и требуется явный вызов функции SQLFreeStmt.

SQLEndTran

Выполняет завершение или откат транзакции.

^ Освобождение соединения

SQLDisconnect

Закрывает соединение с источником данных.

SQLFreeHandle

Освобождает ресурсы, ассоциированные с указанным дескриптором (среды, соединения, оператора, приложения).



Дескрипторы


Перед использованием функций ODBC API приложение-клиент создает дескриптор (идентификатор) окружения, определяющий глобальный контекст для доступа к источникам данных.

Для подключения к базе данных следует создать дескриптор (идентификатор) соединения. Для одного дескриптора окружения может быть создано несколько дескрипторов соединения.

Для выполнения SQL-оператора создается дескриптор (идентификатор) оператора.

Для одного дескриптора соединения может быть создано несколько дескрипторов оператора.

По спецификации ODBC для каждого приложения драйверы могут поддерживать неограниченное число дескрипторов каждого типа. Однако конкретный драйвер может накладывать некоторые ограничения на количество дескрипторов.


Функция, используемая для создания дескриптора окружения, соединения, оператора или приложения имеет следующее формальное описание:

SQLRETURN SQLAllocHandle(

     SQLSMALLINT     HandleType,

     SQLHANDLE     InputHandle,

     SQLHANDLE *     OutputHandlePtr);

Параметр HandleType ([Input]) указывает одной из следующих констант тип создаваемого дескриптора:

SQL_HANDLE_ENV
SQL_HANDLE_DBC
SQL_HANDLE_STMT
SQL_HANDLE_DESC

Параметр InputHandle ([Input]) определяет контекст, в который добавляется создаваемый дескриптор.

Идентификаторы, определяющие тип дескриптора и сам дескриптор описаны в заголовочных файлах sql.h и sqltypes.h.

Параметр OutputHandlePtr ([Output]) –это указатель на буфер, в который помещается создаваемая для дескриптора структура данных.
^

Схема подключения к источнику данных


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



^

Именованные курсоры


Курсор, для которого определено имя курсора, называется именованным курсором.

Ассоциировать имя курсора с активным дескриптором оператора можно вызовом функции SQLSetCursorName. В том случае если эта функция не вызывается явным образом, то драйвер при необходимости может генерировать имя курсора при выполнении SQL-оператора.
^

Блочная выборка данных


При использовании перемещаемого курсора для изменения текущей позиции курсора и выборки строк используется функция SQLFetchScroll. Эта функция позволяет реализовывать:

  • относительный скроллинг - перемещение по результирующему набору в двух направлениях и на любое число строк;

  • абсолютный скроллинг – перемещение на первую или последнюю строку, или строку с указанным номером.

Функция SQLFetchScroll выполняет выборку набора строк из сформированного результирующего набора и возвращает данные для всех связанных столбцов. Наборы строк (rowset) могут быть указаны как через абсолютное или относительное позиционирование, так и посредством закладок(bookmark).

При использовании блочного курсора за один вызов функции может возвращаться несколько строк. Поэтому с каждым столбцом должна связываться не просто переменная соответствующего типа, а массив. Такой массив обычно называется буфером набора строк (rowset buffer).

Возможно два типа связывания:

  • связывание по столбцу (column-wise binding), при котором с каждым столбцом связывается отдельный массив (структура данных, содержащая элементы одного типа);

  • связывание по строке (row-wise binding), при котором с каждой строкой связывается отдельный массив (структура данных, типы элементов которой соответствуют типам столбцов строки набора данных).

При использовании связывания по столбцу с каждым столбцом может быть связано от одного до трех массивов: первый массив – для извлекаемых значений, второй – для длины/ индикатора буферов, третий – для индикатора буферов (если индикаторы и длина хранятся по отдельности). Каждый массив должен содержать число элементов равное числу строк в извлекаемом наборе строк.

При использовании связывания по строкам определяется структура, содержащая от одного до трех элементов для каждого столбца извлекаемых данных. Первый элемент предназначается для извлекаемых данных, второй – для длины / индикатора буфера, третий – для индикатора буфера при раздельном сохранении значений длины и индикатора. Массив таких структур должен содержать количество элементов равное числу строк в извлекаемом наборе строк.
^

Тема 2. Механизмы удаленного доступа. Интерфейс OLE DB.

Объектная модель OLE DB


OLE DB представляет собой набор COM-интерфейсов (Component Object Model), которые предоставляют приложению-клиенту унифицированный доступ к различным источникам данных.

Можно сказать, что OLE DB это метод доступа к любым данным через стандартные COM-интерфейсы, вне зависимости от типа данных и места их расположения. В качестве данных могут выступать базы данных, простые документы, таблицы Excel и любые другие источники данных. В отличие от доступа, предоставляемого посредством драйверов OBDC, OLE DB позволяет реализовывать доступ к источникам данных, как с применением языка SQL (к SQL-серверам), так и к любым другим произвольным источникам данных.

Средства, предоставляющие доступ к источнику данных с использованием технологии OLE DB. называются ^ OLE DB провайдерами. Программы-клиенты, использующие для доступа OLE DB провайдеры, называются потребителями данных.

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


Спецификация OLE DB описывает набор интерфейсов, реализуемых объектами OLE DB. Каждый объектный тип определен как набор интерфейсов. Спецификация OLE DB определяет набор интерфейсов базового уровня, которые должны реализовываться любыми OLE DB провайдерами.

В базовую модель OLE DB входят следующие объекты:

  • объект DataSource (источник данных), используемый для соединения с источником данных и создания одного или нескольких сеансов. Этот объект управляет соединением, использует информацию о полномочиях и аутентификации пользователя.

  • объект Session (сеанс) управляет взаимодействием с источником данных – выполняет запросы и создает результирующие наборы. Сеанс также может возвращать метаданные. В сеансе может создаваться одна или несколько команд.

  • объект Rowset (результирующий набор) представляет собой данные, извлекаемые в результате выполнения команды или создаваемые в сеансе.

На следующей схеме приведен пример использования интерфейсов базового уровня для создания результирующего набора.


Создание объекта:

CoCreateInstance









^ Объект DataSource

IDBInfo

IDBInitialize

IDBCreateSession










pIDBCreateSession->CreateSession









^ Объект Session

IOpenRowSet









pIOpenRowset->OpenRowset















^ Объект Rowset

IAccessor

IRowsetInfo

IColumnsInfo

IRowset



Спецификация OLE DB определяет объект Command, который предназначается для выполнения текстовой команды. В качестве такой текстовой команды может выступать:

  • SQL-оператор

  • тест, понимаемый OLE DB провайдером.

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


Для обеспечения расширенных возможностей управления транзакциями объектная модель OLE DB включает объект Transaction.


Все объекты объектного типа Rowset должны реализовывать следующие интерфейсы:

  • интерфейс IRowset, используемый для извлечения строк;

  • интерфейс IAccessor, используемый для определения связывания;

  • интерфейс IColumnsInfo, предоставляющий информацию о столбцах результирующего набора;

  • интерфейс IRowsetInfo, предоставляющий информацию о самом результирующем наборе;

  • интерфейс IConvertType, предоставляющий информацию о преобразовании типов данных, поддерживаемых в результирующем наборе.

При реализации доступа к БД посредством OLE DB провайдера сначала следует создать объект данных и установить соединение с базой данных. Далее необходимо создать объект сеанс. И только потом можно создавать результирующий набор.


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

  • Для объекта сеанс вызывается метод 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 – освобождает аксессор.


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

HRESULT hr=pIAccessor-> CreateAccessor();


Объект Command должен реализовывать следующие интерфейсы:

  • ICommand

  • IAccessor

  • ICommandText

  • IColumnInfo

  • ICommandProperties.

Для создания команды вызывается метод IDBCreateCommand::CreateCommand объекта сеанс.

Текст, выполняемый командой, устанавливается при вызове метода ICommandText::SetCommandText. При этом указывается уникальный идентификатор GUID синтаксиса команды.

Алгоритм выполнения команды приведен на следующей схеме:

Session



pIDBCreateCommand->CreateCommand



Command



pICommand->Execute



Rowset


До выполнения команды можно определить поведение создаваемого результирующего набора вызовом метода ICommandProperties::SetProperties.

Для многократного выполнения запроса и при использовании параметров следует вызвать метод ICommandPrepare::Prepare, а затем определить параметры вызовом метода ICommandWithParameters::SetParameterInfo.

Если в результате выполнения команды возвращается несколько результирующих наборов, то используется метод IMultipleResults::GetResult.





Добавить документ в свой блог или на сайт


Похожие:

Краткое содержание лекций Тема Механизмы удаленного доступа. Интерфейс odbc iconДля обеспечения удаленного доступа по протоколу ssh к акаунтам пользователей
Для обеспечения удаленного доступа по протоколу ssh к акаунтам пользователей на нашем хостинге, в целях безопасности, используется...

Краткое содержание лекций Тема Механизмы удаленного доступа. Интерфейс odbc iconРегламент обслуживания Инвесторов в системе удаленного доступа к торгам с использованием системы «Онлайн-Трейдинг» через сеть Интернет
Ри обслуживании Инвесторов в системе удаленного доступа к торгам с использованием программно-технического комплекса «Онлайн-Трейдинг»...

Краткое содержание лекций Тема Механизмы удаленного доступа. Интерфейс odbc iconЗаявление о получении удаленного доступа к торгам на ммвб-ртс с использованием системы «Клиент+Банк Онлайн» через сеть Интернет
«Договору комиссии № от 200 г об оказании брокерских услуг на организованном рынке ценных бумаг на бирже ОАО московская Биржа прошу...

Краткое содержание лекций Тема Механизмы удаленного доступа. Интерфейс odbc iconКраткое содержание лекций по курсу «Объектно-ориентированный анализ и проектирование» Раздел Методические аспекты проектирования программного обеспечения
Системный подход – это методология исследования объекта любой природы как системы. Система – это совокупность взаимосвязанных частей,...

Краткое содержание лекций Тема Механизмы удаленного доступа. Интерфейс odbc iconКраткое содержание занятия. Кол-во часов
Хозяйственный инвентарь лопаты, грабли, мотыги, носилки, культиваторы, вилы и т д Весы

Краткое содержание лекций Тема Механизмы удаленного доступа. Интерфейс odbc iconПлан лекций по Молекулярной Биологии для фбб 2 курс
Цитологические (клеточные) – поддержание строения клетки, механизмы ее деления, передвижения, межклеточное сообщение, построение...

Краткое содержание лекций Тема Механизмы удаленного доступа. Интерфейс odbc iconЗадания по практикуму для бакалавров 2 семестр. Тема «интерфейс»
Легкие (тренировочные) задачи. Элементы этих программ могут быть использованы при выполнении основного задания практикума. В соответствие...

Краткое содержание лекций Тема Механизмы удаленного доступа. Интерфейс odbc iconКраткое содержание занятия. Кол-во часов
Познакомить учащихся с почвообрабатывающими машинами. Познакомить учащихся с безопасными приёмами работы

Краткое содержание лекций Тема Механизмы удаленного доступа. Интерфейс odbc iconНиколай Левашов Сущность и Разум
Кроме этого, автор проливает свет на природу памяти, опять-таки впервые показывает механизмы формирования как кратковременной, так...

Краткое содержание лекций Тема Механизмы удаленного доступа. Интерфейс odbc iconУрока Наименование частей (А) Глав тем и краткое содержание урока Цели и задачи урока Тип урока Понятия и термины Оснащение
...

Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©sudoc.ru 2000-2013
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы