|
Программирование >> Sql: полное руководство
той же системе, что и драйвер ODBC, то драйвер обычно напрямую вызывает внутренние API-функции СУБД Если же доступ к базе данных осуществляется по сети, то драйвер может: а) направлять все вызовы в клиентскую часть СУБД которая будет переадресовьшать их на сервер; б) самостоятельно управлять сеансом сетевого подключения к удаленной базе данных. Диспетчер драйверов. Средний уровень занят диспетчером драйверов ODBC который отвечает за загрузку и выгрузку драйверов по запросам приложений, а также за направление вызовов функций ODBC, производимых приложениями, соответствующим драйверам для выполнения. Когда приложению нужно получить доступ к базе данных посредством ODBC, оно выполняет ту же самую последовательность начальных действий, которая предусматривается стандартом SQL/CLI. Прежде всего программа получает дескрипторы среды и сеанса, а затем вызывает функцию SQLConnect (), указав конкретный источник данных, с которым она хочет работать. В ответ на это диспетчер драйверов ODBC анализирует переданную профаммой информацию о подключении и определяет, какой драйвер ей нужен. Диспетчер зафужает этот драйвер в память, если только к настоящему времени драйвер не используется никакой другой профаммой. Все последующие вызовы функций в пределах данного сеанса обрабатываются этим драйвером. Программа может затем вызывать функцию SQLConnect () для подключения к другим источникам данных, что вызовет зафузку дополнительных драйверов, но, тем не менее, обращения к различным базам данных и различным СУБД будут производиться посредствол единого набора функций. Интерактивный модуль формирования запросов Программе анализа данных Процессор электронных таблиц Пользовательская программа Генератор отчетов ODBC API Диспетчер драйверов ODBC Драйвер ODBC Локальная СУБД Драйвер ODBC (включяя уровень выполнения SQL-запросов) Драйвер ODBC Клиентская СУБД Драйвер ODBC
Серверная база данных Серверная база данных Риа 19.24. Архитектура ODBC Независимое взаимодействие с различными СУБД Разработав универсальный профаммный интерфейс и многоуровневую архитектуру ODBC с диспетчеризацией вызовов, Microsoft значительно продвинулась в направлении независимого от СУБД доступа к базам данных, но сделать доступ абсолютно прозрачным вряд ли возможно. Драйверы ODBC для различных СУБД могут легко замаскировать незначительные отличия их профаммных интерфейсов и диалектов SQL, но более фундаментальные отличия скрыть фудно или даже невозможно. ODBC частично решает эту проблему, разделяя полный набор предлагаемых возможностей на несколько функциональных уровней и вводя набор функций, позволяюших драйверу ODBC рассказать о себе приложению: предоставить ему информацию о своих возможностях, наборе поддерживаемых функций и типов данных. Однако само наличие нескольких уровней функциональных возможностей драйверов и выборочная поддержка драйверами этих возможностей ставит приложение в зависимость от СУБД, хот и на качественно ином уровне. Поэтому на практике большинство приложений испол1ет только базовые функции ODBC: профаммисты не хотят без крайней необходимости возиться с особенностями отдельных драйверов. Функции ODBC для работы с системными каталогами Одной из областей, в которых ODBC предлагает возможности, выходящие за рамки стандарта SQL/CL1, является получение информации о Сфуктуре базы данных из системного каталога. Будучи частью стандарта ANSI/ISO, библиотека CLI предполагает, что эта информация (о таблицах, столбцах, привилегиях и т.п.) доступна через информационную схему, описанную в главе 16. А вот ODBC не считает обязательным наличие в базе данных информационной схемы. Взамен этот протокол включает набор специальных функций (табл. 19.4), которые предоставляют приложению информацию о Сфуктуре источника данных. Вызывая эти функции, приложение может в процессе своего выполнения получать информацию о таблицах, столбцах, привилегиях, первичных и внешних ключах и хранимых процедурах, составляющих сфуктуру источника данных. Функции ODBC, предназначенные для работы с системными каталогами, обычно не нужны в специализированных приложениях, а вот профаммам общего назначения, таким как модули формирования запросов, генераторы отчетов и утилиты анализа данных, без подобных функций просто не обойтись. Эти функции можно вызывать в любое время после подключения к источнику данных. Например, генератор отчетов может вызвать функцию SQLConnect () и сразу же вслед за ней - функцию SQLTables (), чтобы узнать, какие таблицы имеются в базе данных. Перечень этих таблиц может быть выведен на экран, чтобы пользователь мог выбрать те из них, информация из которых ему нужна для отчета. Все функции, работающие с каталогами, возвращают информацию в виде таблицы результатов запроса. Для получения этой информации приложения применяют те же методы, которые используются для получения результатов обычных запросов. Выполняемых посредством CL1. Например, профамма может связать столбцы результирующего набора записей со своими переменными и перемещаться по набору записей с помощью функции SQLFetch (). В частности, набор записей, сформированный функцией SQLTables (), будет содержать по одной записи для каждой таблицы базы данных, и функция SQLFetch () будет автоматически помещать в программные переменные сведения об очередной таблице. г каталогами Та6пица9.4.;; Функции Оойс,првд(ченМ№я работы с i Функция SQLTables о SQLTablePrivileges() SQLColumns() SQLColumnPrivileges() SQLPrimaryKeys() SQLForeignKeys() SQLSpecialColumns() SQLStatisics() SQLProcedures() SQLProcedureColumns() Описание Возвращает список таблиц заданного каталога (каталогов) и схемы (схем) Возвращает список привилегий заданной таблицы (таблиц) Возвращает список имен столбцов заданной таблицы (таблиц) Возвращает список привилегий на указанные столбцы заданной таблицы Возвращает список имен столбцов, составляющих первичный ключ заданной таблицы Возвращает список внещних ключей заданной таблицы и список внещних ключей других таблиц, которые связаны с заданной таблицей Возвращает список столбцов, которые однозначно идентифицируют строку таблицы, или столбцов, которые автоматически обновляются при обновлении строки Возвращает статистичестсие данные о таблице и ее н1дексах Возвращает список хранимых процедур заданного источника данных Возвращает список входных и выходных параметров и имена возвращаемых столбцов для заданной хранимой процедуры (процедур) Расширенные возможности ODBC Как уже упоминалось, ODBC предоставляет дополнительные возможности помимо тех, что определены стандартом SQL/CLI. Многие из них предназначены для повыщения производительности приложений, использующих ODBC, за счет минимизации количества вызовов функций ODBC, необходимых для выполнения типичных задач, а также за счет сокращения сетевого трафика при работе с ODBC. Кроме того, ODBC предоставляет ряд возможностей, обеспечивающих больщую независимость приложения от конкретной СУБД и помогающих приложению устанавливать соединение с источником данных. Часть дополнительных возможностей ODBC реализована в виде функций, коротко описанных в табл 19 5. Остальные управляются атрибутами инструкций и сеансов. Учтите, что многие из расщиренных возможностей ODBC появились только в версии 3.0 этого протокола и еще не поддерживаются больщинством драйверов и приложетшй.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |