Указатели дескрипторов

Дескриптор представляет собой коллекцию метаданных, описывающих параметры инструкции SQL или столбцов результирующего набора, как показано в приложении или драйвере (также известном как реализация). Таким образом, дескриптор может заполнить любую из четырех ролей:

  • Дескриптор параметра приложения (APD). Содержит сведения о буферах приложений, привязанных к параметрам в инструкции SQL, таких как их адреса, длины и типы данных C.

  • Дескриптор параметра реализации (IPD). Содержит сведения о параметрах в инструкции SQL, таких как их типы данных SQL, длина и допустимость null.

  • Дескриптор строки приложения (ARD). Содержит сведения о буферах приложения, привязанных к столбцам в результирующем наборе, таких как их адреса, длины и типы данных C.

  • Дескриптор строки реализации (IRD). Содержит сведения о столбцах в результирующем наборе, таких как типы данных SQL, длина и допустимость значений NULL.

Четыре дескриптора (по одному заполнению каждой роли) выделяются автоматически при выделении инструкции. Они называются автоматически выделенными дескрипторами и всегда связаны с этой инструкцией. Приложения также могут выделять дескрипторы с помощью SQLAllocHandle. Они называются явно выделенными дескрипторами. Они выделяются для подключения и могут быть связаны с одной или несколькими операторами для этого подключения для выполнения роли APD или ARD в этих инструкциях.

Большинство операций в ODBC можно выполнять без явного использования дескрипторов приложением. Однако дескрипторы предоставляют удобный ярлык для некоторых операций. Например, предположим, что приложение хочет вставить данные из двух разных наборов буферов. Чтобы использовать первый набор буферов, он неоднократно вызывает SQLBindParameter , чтобы привязать их к параметрам в инструкции INSERT , а затем выполнить инструкцию. Чтобы использовать второй набор буферов, он повторит этот процесс. Кроме того, он может настроить привязки к первому набору буферов в одном дескрипторе и второму набору буферов в другом дескрипторе. Чтобы переключиться между наборами привязок, приложение просто вызовет SQLSetStmtAttr и связывает правильный дескриптор с инструкцией в качестве APD.

Дополнительные сведения о дескрипторах см. в разделе "Типы дескрипторов".