Соответствие основного интерфейса

Все драйверы ODBC должны иметь по крайней мере соответствие интерфейсу уровня ядра. Так как функции уровня ядра являются обязательными для большинства универсальных взаимодействующих приложений, драйвер может работать с такими приложениями. Функции на уровне ядра также соответствуют функциям, определенным в спецификации интерфейса командной строки ISO, и к невариантным функциям, определенным в спецификации Open Group CLI. Драйвер ODBC, поддерживающий интерфейс на уровне ядра, позволяет приложению выполнять следующие действия:

  • Выделяйте и освобождайте все типы дескрипторов, вызвав функцию SQLAllocHandle и SQLFreeHandle.

  • Используйте все формы функции SQLFreeStmt .

  • Привязка столбцов результирующего набора путем вызова SQLBindCol.

  • Обрабатывайте динамические параметры, включая массивы параметров, только в направлении ввода, вызывая SQLBindParameter и SQLNumParams. (Параметры в направлении вывода имеют функцию 203 на соответствие интерфейсу уровня 2.)

  • Укажите смещение привязки.

  • Используйте диалоговое окно "данные в процессе выполнения", включающее вызовы метод SQLParamData и SQLPutData.

  • Управление курсорами и именами курсоров путем вызова SQLCloseCursor, SQLGetCursorName и SQLSetCursorName.

  • Получите доступ к описанию (метаданным) результирующих наборов, вызвав SQLColAttribute, SQLDescribeCol, SQLNumResultCols и SQLRowCount. (Использование этих функций для столбца с номером 0 для получения метаданных закладки — функция 204 в соответствии с интерфейсом уровня 2.)

  • Запросите словарь данных, вызвав функции каталога SQLColumns, SQLGetTypeInfo, SQLStatistics и SQLTables.

    Драйвер не требуется для поддержки составных имен таблиц и представлений базы данных. (Дополнительные сведения см. в описании функции 101 в разделе соответствие интерфейса уровня 1 и функции 201 на соответствие интерфейсу уровня 2.) однако некоторые функции спецификации SQL-92, такие как квалификация столбцов и имена индексов, синтаксически сравнимы с многокомпонентным именованием. текущий список функций ODBC не предназначен для создания новых параметров в этих аспектах SQL-92.

  • Управление источниками данных и соединениями путем вызова SQLConnect, SQLDataSources, SQLDisconnect и SQLDriverConnect. Получите сведения о драйверах независимо от того, какой уровень ODBC поддерживается, вызвав SQLDrivers.

  • подготовка и выполнение инструкций SQL путем вызова SQLExecDirect, SQLExecute и SQLPrepare.

  • Получение одной строки результирующего набора или нескольких строк (только в прямом направлении) путем вызова SQLFetch или путем вызова SQLFetchScroll с аргументом фетчориентатион , для которого задано значение SQL_FETCH_NEXT.

  • Получите несвязанный столбец в частях, вызвав SQLGetData.

  • Получите текущие значения всех атрибутов, вызвав SQLGetConnectAttr, SQLGetEnvAttr и SQLGetStmtAttr, и задайте для всех атрибутов значения по умолчанию и присвойте определенным атрибутам значения, не используемые по умолчанию, вызвав SQLSetConnectAttr, SQLSetEnvAttr и SQLSetStmtAttr.

  • Управлять определенными полями дескрипторов путем вызова склкопидеск, SQLGetDescField, SQLGetDescRec, SQLSetDescField и SQLSetDescRec.

  • Получите диагностические сведения, вызвав SQLGetDiagField и SQLGetDiagRec.

  • Обнаружение возможностей драйвера путем вызова SQLGetFunctions и SQLGetInfo. кроме того, определите результат любых подстановок текста, внесенных в оператор SQL перед отправкой в источник данных, вызвав SQLNativeSql.

  • Используйте синтаксис SQLEndTran для фиксации транзакции. Драйвер основного уровня не должен поддерживать истинные транзакции; Таким образом, приложение не может указывать SQL_ROLLBACK или SQL_AUTOCOMMIT_OFF для атрибута подключения SQL_ATTR_AUTOCOMMIT. (Дополнительные сведения см. в описании функции 109 в разделе соответствие интерфейса уровня 2.)

  • Вызовите SQLCancel , чтобы отменить диалоговое окно "данные во время выполнения" и, в многопоточных средах, для отмены функции ODBC, выполняющейся в другом потоке. Соответствие интерфейса на уровне ядра не требует поддержки асинхронного выполнения функций, а SQLCancel для отмены функции ODBC, выполняющейся асинхронно. Ни платформа, ни драйвер ODBC не должны быть многопоточными, чтобы драйвер произносил независимые действия одновременно. Однако в многопоточных средах драйвер ODBC должен быть потокобезопасным. Сериализация запросов из приложения является стандартным способом реализации этой спецификации, даже если это может привести к серьезным проблемам с производительностью.

  • Получите SQL_BEST_ROWID столбец, идентифицирующий строки таблиц, вызвав SQLSpecialColumns. (Поддержка SQL_ROWVER является функцией 208 на соответствие интерфейсу уровня 2.)

    Важно!

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