SQL/CLI: ODBC (Open DataBase Connectivity)

История создания
Если в 1970-80 г.г. фактически каждый разработчик предоставлял пользователю средства разработки приложений с технологией доступа к своим СУБД, то с конца 80-х годов все существенно изменилось. В 1989 году была образована группа SQL Access Group (SAG), объединившая 42 компании, производящие СУБД и инструментальные средства к ним. Основной задачей этой группы является создание спецификаций форматов и протоколов для коммуникаций в системах БД с архитектурой клиент/сервер на основе спецификаций удаленного доступа к БД (Remote Database Access – RDA). Соответствующие стандарты были разработаны – SQL/CLI.

ODBC (Open DataBase Connectivity)

Общие сведения об ODBC
ODBC представляет собой библиотеку, включающую более 50 функций (API), символические имена типов данных и состояния вызовов функций с использованием кодов ошибок. Функции ODBC позволяют прикладной программе обращаться к БД различных типов, используя язык SQL. Реализовано ODBC на основе указателей, поэтому отпадает необходимость использования глобальных данных, характерных для встроенного SQL. Приложение получает доступ к данным через указатели. Такой стиль связывания не нуждается в препроцессоре и, следовательно, дает возможность разрабатывать переносимые приложения. Август 1993 – выход в свет.

Структурная схема доступа к БД через ODBC (три варианта)


Структурная схема доступа к БД через ODBC (первый вариант)
Структурная схема доступа к БД через ODBC (первый вариант)

Структурная схема доступа к БД через ODBC (второй вариант)
Структурная схема доступа к БД через ODBC (второй вариант)

Структурная схема доступа к БД через ODBC (третий вариант)
Структурная схема доступа к БД через ODBC (третий вариант)

Создание источников данных DSN в ODBC

Создание псевдонимов (Alias) источников данных (Data Source Name – DSN) может быть выполнено интерактивно с помощью программы – OdbcAd32.Dll, размещенной в каталоге C:\Windows\System32\. Эта утилита имеет пиктограмму в Панели управления — Администрирование под названием «Источники данных ODBC» и мобильную панель управления (Odbccp.Cpl). Ее примерный размер 37 Кбайт. Источник данных может создаваться как для одного пользователя на странице Пользовательский (User) DSN, так и для всех – на странице Системный (System) DSN.

Хранение настроек ODBC

Сведения об источниках данных (DSN) хранятся в реестре Windows в разделах:
• Для User DSN: HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI
• Для System DSN: HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI
• Сведения об установленных драйверах хранятся в реестре Windows в разделе: HKEY_LOCAL_MACHINT\SOFTWARE\ODBC\ODBCINST.INI.

ODBC API
• Алгоритм работы через ODBC API
• Обработка ошибок ODBC API
• Уровни соответствия ODBC API
• Преобразование данных в ODBC API
• Основные функции ODBC API
• SQL-расширение ODBC API
• Дополнительные функции ODBC API

Алгоритм работы через ODBC API



ИНИЦИАЛИЗАЦИЯ
Назначение
идентификатора
окружения
SQLAllocEnv(phenv)
Назначение
Идентификатора
соединения
SQLAllocConnect(henv, phdbc)
Соединение с сервером базы данных SQLConnect(hdbc, szDSN,0,szUID,0,szAuthStr,0)
Назначение идентификатора оператора SQLAllocStmt(hdbc, phstmt)
ОБРАБОТКА SQL-операторов
Выполнение оператора и выборка данных SQLExecDirect(hstmt,szSqlStr,cbSqlStr)
SQLPrepare(hstmt,szSqlStr,cbSqlStr)
SQLExecute (hstmt)
ЗАВЕРШЕНИЕ
Освобождение идентификатора оператора SQLFreeStmt(hstmt, fOption)
Разрыв соединения с сервером SQLDisconnect(hdbc)
Освобождение идентификатора соединения SQLFreeConnect(hdbc)
Освобождение идентификатора окружения SQLFreeEnv(henv)

Обработка ошибок ODBC API

Обработка ошибок ODBC API включает два этапа:
Определение факта ошибки
Все функции возвращают код возврата (RETCODE), свидетельствующий о правильности выполнения функции ODBC.
Идентификация сущности ошибки
Для идентификации сущности ошибки в ODBC предусмотрена специальная функция SQLError(), возвращающая в параметре szSqlState статус ошибки SQLSTATE.

КОД ВОЗВРАТА ЗНАЧЕНИЕ ОПИСАНИЕ
SQL_SUCCESS 0 Функция выполнена успешно и нет ошибок
SQL_SUCCESS_WITH_INFO 1 Функция выполнена успешно, но есть предупреждение
SQL NO DATA FOUND 100 Все строки результата запроса выбраны
SQL_ERROR -1 Ошибка в выполнении функции, и есть данные об ошибке
SQL_INVALID_HANDLE -2 Один или более идентификаторов используется в качестве параметра, и один из них является недействительным
SQL_STILL_EXECUTING 2 Одна из функций выполняется асинхронно и все еще в работе
SQL_NEED_DATA 99 Для выполнения одного из операторов прикладная программа должна определить не менее одного значения оператора

Уровни соответствия ODBC API

Уровни соответствия (грамматики SQL) включают в себя следующие:
• Минимальную (Minimum)
• Базовую (Core)
• Расширенную (Extended)





Преобразование данных в ODBC API
• Данные, хранимые в источнике данных, имеют SQL-тип данных (SQL Data Type).
• Каждый ODBC-драйвер преобразует SQL-тип источника данных в соответствующий ODBC-тип (fSqlType).
• Далее, каждому ODBC SQl-типу данных ставится в соответствие ODBC SQL_C – тип данных (fCType).
• Далее он преобразуется в C-тип данных.
• Фактически данные неоднократно конвертируются драйвером ODBC, что сказывается на быстродействии.


Оставить комментарий





Статистика

Рейтинг@Mail.ru