Соответствие основного интерфейса
Все драйверы 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 должны реализовывать функции в базовом уровне соответствия интерфейсов.