Тип буфера данных
Тип данных C буфера задается приложением. При использовании одной переменной это происходит, когда приложение выделяет переменную. С универсальной памятью , то есть память, указываемая указателем типа void, происходит, когда приложение приведение памяти к конкретному типу. Драйвер обнаруживает этот тип двумя способами:
Аргумент типа буфера данных. Буферы, используемые для передачи значений параметров и результирующих данных, таких как буфер, привязанный к TargetValuePtr в SQLBindCol, обычно имеют связанный аргумент типа, например аргумент TargetType в SQLBindCol. В этом аргументе приложение передает идентификатор типа C, соответствующий типу буфера. Например, в следующем вызове SQLBindCol значение SQL_C_TYPE_DATE сообщает драйверу, что буфер даты является SQL_DATE_STRUCT:
SQL_DATE_STRUCT Date; SQLINTEGER DateInd; SQLBindCol(hstmt, 1, SQL_C_TYPE_DATE, &Date, 0, &DateInd);
Дополнительные сведения об идентификаторах типов см . в разделе "Типы данных в ODBC " далее в этом разделе.
Предопределенный тип. Буферы, используемые для отправки и извлечения параметров или атрибутов, например буфера, на который указывает аргумент InfoValuePtr в SQLGetInfo, имеют фиксированный тип, который зависит от указанного параметра. Драйвер предполагает, что буфер данных имеет этот тип; это ответственность приложения за выделение буфера этого типа. Например, в следующем вызове SQLGetInfo драйвер предполагает, что буфер является 32-разрядным целым числом, так как это то, что требуется параметру SQL_STRING_FUNCTIONS:
SQLUINTEGER StringFuncs; SQLGetInfo(hdbc, SQL_STRING_FUNCTIONS, (SQLPOINTER) &StringFuncs, 0, NULL);
Драйвер использует тип данных C для интерпретации данных в буфере.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по