Поделиться через


Сведения о реализации API ODBC

Применимо:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azureazure Synapse Analytics AnalyticsPlatform System (PDW)

Open Database Connectivity (ODBC) — это API Microsoft Win32, который позволяет приложениям получать доступ к данным в источниках данных, совместимых с ODBC. В этой статье объясняется, как ODBC обрабатывает вызовы функций, управляет дескрипторами, взаимодействует с драйверами и предоставляет диагностику. Это дает разработчикам более четкое представление о том, как ODBC работает между приложениями, диспетчером драйверов и драйверами базы данных.

Справочник по драйверу ODBC собственного клиента SQL Server не документируйте каждую функцию ODBC. Он документирует только эти функции с параметрами или поведением, уникальными для драйвера ODBC собственного клиента SQL Server.

Драйвер ODBC собственного клиента SQL Server соответствует спецификации ODBC 3.51. Полный справочный материал скачайте пакет SDK для компонентов Microsoft Data Access из Центра разработчиков доступа к данным и хранилищу или просмотрите справочник программиста ODBC.

Как работает API ODBC

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

Модель дескриптора ODBC

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

Тип дескриптора Цель
Среда (HENV) Глобальные параметры ODBC и управление версиями
Подключение (HDBC) Представляет подключение к конкретному источнику данных
Оператор (HSTMT) Управляет инструкциями SQL, параметрами и результирующих наборами
Дескриптор (HDESC) Сохраняет метаданные для параметров и столбцов

Взаимодействие диспетчера драйверов и драйвера

  1. Приложение вызывает API ODBC.
  2. Диспетчер драйверов проверяет параметры и отправляет вызов.
  3. Драйвер взаимодействует с источником данных.
  4. Результаты возвращаются через диспетчер драйверов в приложение.

Жизненный цикл вызова функции

  1. Выделение дескрипторов.
  2. Задайте атрибуты среды или подключения.
  3. Подключитесь к источнику данных.
  4. Подготовка или выполнение инструкций SQL.
  5. Привязка параметров или столбцов результатов.
  6. Получение строк.
  7. Бесплатные дескрипторы.

Диагностика и обработка ошибок

Используйте следующие диагностические функции:

  • SQLGetDiagRec
  • SQLGetDiagField

Диагностика может применяться к средам, соединениям или дескрипторам инструкций.

Вызовы Юникода и ANSI

ODBC предоставляет два типа функций:

  • Функции ANSI , такие как SQLExecDirectA
  • Функции Юникода , такие как SQLExecDirectW

Используйте API Юникода для современных приложений.

Потоки и пул

  • Безопасность потоков зависит от того, как приложение настраивает драйвер и диспетчер драйверов.
  • Чтобы сократить затраты на подключение, включите пул подключений на любом уровне.

Справочник по API ODBC

Следующие разделы группирует функции API ODBC по задачам. Каждая запись ссылается на подробную справочную страницу драйвера собственного клиента SQL Server.

Подключение и источник данных

Используйте эти функции для установления, настройки и управления подключениями к SQL Server.

Функция Description
SQLConnect Установка подключения к источнику данных с помощью DSN, идентификатора пользователя и пароля
SQLDriverConnect Подключение с помощью строки подключения с ключевыми словами для конкретного драйвера
SQLBrowseConnect Интерактивное обнаружение атрибутов подключения для создания строки подключения
SQLConfigDataSource Создание, изменение или удаление имен источников данных (DSN) программным способом
SQLDrivers Список всех установленных драйверов ODBC и их атрибутов
SQLGetConnectAttr Получение текущего значения атрибута подключения
SQLSetConnectAttr Настройка поведения подключения, например тайм-аутов и изоляции транзакций

Выполнение инструкций SQL

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

Функция Description
SQLExecDirect Выполнение инструкции SQL немедленно без подготовки
SQLExecute Выполнение ранее подготовленной инструкции SQL
SQLCancel Отмена выполнения инструкции во время выполнения
SQLNativeSql Перевод синтаксиса ODBC SQL на собственный диалект SQL драйвера
SQLEndTran Фиксация или откат транзакции в соединении или среде

Привязка параметров и столбцов

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

Функция Description
SQLBindParameter Привязка буфера приложения к маркеру параметра инструкции SQL
SQLBindCol Привязка буфера приложения к столбцу результирующих наборов
SQLParamData Получение следующего параметра, требующего данных во время операций выполнения данных
SQLPutData Отправка данных параметров в блоках во время выполнения инструкции
SQLDescribeParam Получение типа данных и размера маркера параметра
SQLNumParams Подсчет количества параметров в подготовленной инструкции

Получение и обработка результатов

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

Функция Description
SQLFetch Получение следующего набора строк данных и возврат связанных значений столбцов
SQLFetchScroll Получение набора строк в абсолютной или относительной позиции в результирующем наборе
SQLGetData Получение данных для одного несвязанного столбца или больших данных в блоках
SQLMoreResults Переход к следующему результирующий набор, когда инструкция возвращает несколько результатов
SQLRowCount Получение количества строк, затронутых инструкцией INSERT, UPDATE или DELETE
SQLCloseCursor Закройте курсор и отмените ожидающие результаты
SQLGetCursorName Получение имени, связанного с курсором инструкции

Обнаружение схемы и метаданных

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

Функция Description
SQLTables Вывод списка таблиц, представлений и других объектов, таких как таблица, в источнике данных
SQLColumns Вывод списка столбцов и их атрибутов для указанных таблиц
SQLPrimaryKeys Получение столбцов первичного ключа для таблицы
SQLForeignKeys Вывод списка внешних ключей для таблицы или внешних ключей в других таблицах, ссылающихся на нее.
SQLSpecialColumns Определение столбцов, которые однозначно определяют строку или обновляются автоматически.
SQLStatistics Получение сведений о индексе и статистике таблиц
SQLProcedures Перечисление хранимых процедур, доступных в источнике данных
SQLProcedureColumns Описание входных и выходных параметров и столбцов результатов для хранимых процедур

Метаданные столбца и результирующих наборов

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

Функция Description
SQLDescribeCol Получение имени столбца, типа, размера и значения NULL для результирующих столбцов
SQLColAttribute Получение определенного атрибута столбца результирующих наборов
SQLNumResultCols Подсчет количества столбцов в результирующем наборе
SQLGetTypeInfo Вывод списка типов данных SQL, поддерживаемых источником данных

Привилегии и безопасность

Используйте эти функции для получения сведений о разрешениях для объектов базы данных.

Функция Description
SQLTablePrivileges Перечисление привилегий, предоставленных таблицам в источнике данных
SQLColumnPrivileges Перечисление привилегий, предоставленных для определенных столбцов таблицы

Атрибуты среды и инструкции

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

Функция Description
SQLSetEnvAttr Настройка атрибутов среды, таких как версия ODBC и пул подключений
SQLGetStmtAttr Получение текущего значения атрибута инструкции
SQLSetStmtAttr Настройка поведения инструкции, например типа курсора и времени ожидания запроса

Дескрипторы

Используйте эти функции для непосредственного управления записями дескриптора для расширенной обработки параметров и столбцов.

Функция Description
SQLGetDescField Получение одного поля из записи дескриптора
SQLSetDescField Установка одного поля в записи дескриптора
SQLSetDescRec Установка нескольких полей в записи дескриптора одним вызовом

Сведения о диагностике и драйвере

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

Функция Description
SQLGetDiagField Получение поля диагностики из среды, подключения или инструкции
SQLGetInfo Получение общих сведений о возможностях драйвера и источника данных
SQLGetFunctions Определение функций ODBC, поддерживаемых драйвером

Очистка ресурсов

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

Функция Description
SQLFreeHandle Выпуск среды, соединения, оператора или дескриптора
SQLFreeStmt Ресурсы бесплатных инструкций, закрытие курсоров или отмена привязки параметров и столбцов