|
Программирование >> Sql: полное руководство
/* Определение количества столбцов в таблице результатов запроса */ short SQLNumResultCols( long StmtHdl, /* Входной: дескриптор инструкции */ short *colCount) /* Выходной: указатель на буфер, в который записывается количество столбцов */ /* Получение основных short SQLDescribeCol (
атрибутов столбца таблицы результатов запроса */ дескриптор инструкции */ номер столбца, информацию о котором следует получить */ имя столбца */ длина буфера с именем столбца */ указатель на буфер, в который записывается реальная длина имени столбца */ указатель на буфер, в который записывается код типа данных столбца */ указатель на буфер, в который записывается размерность данных, содержащихся в столбце */ указатель на буфер, в который записывается количество десятичных цифр (если столбец содержит числовые данные) */ указатель на буфер, в который записывается признак того, может ли столбец содержать значения NULL */ /* Получение информации об указанном атрибуте столбца в таблице результатов /запроса */ short SQLColAttribute ( long StmtHdl, /* Входной: short colNr, /* Входной: short attrCode, char *attrInfo, short bufLen, short *actLen, *numAttr) дескриптор инструкции */ номер столбца, информацию о котором следует получить */ /* Входной: код получаемого атрибута */ /* Выходной: строковое значение атрибута */ /* Входной: длина буфера для строкового значения атрибута */ /* Выходной- указатель на буфер, в который записывается реальная длина строкового значения атрибута */ /* Выходной: указатель на буфер, в который записывается числовое значение атрибута */ /* Получение значений набора полей из описателя CLI */ short SQLGetDescRec( long descHdl, /* Входной: short recNr, /* Входной. char *name. short bufLen, short *namLen, дескриптор описателя CLI */ номер записи в описателе CLI, из которой следует извлечь информацию */ Выходной: имя описываемого элемента (параметра запроса или столбца таблицы результатов запроса) */ Входной; длина буфера для имени описываемого элемента */ Выходной, указатель на буфер, в который помещается реальная длина имени описываемого элемента */ Рис. 19.19, Функции си, служащие дпя обработки динамических запросов short tdataType, short *subrype, short *length, short *precis, 1 short scale, short *nullable) /* Выходной: указатель на буфер, в который помещается код типа данных описываемого элемента */ /* Выходной; указатель на буфер, в который помещается дополнительный код типа данных описываемого элемента (если он содержит значение даты/времени) */ /* Выходной: указатель на буфер, в который помещается длина описываемого элемента */ /* Выходной: указатель на буфер, в который помещается точность представления описываемого элемента (если он содержит десятичное значение) */ /* Выходной: указатель на буфер, в который помещается степень масштабирования описываемого элемента (если он содержит десятичное значение) */ /* Выходной; указатель на буфер, в который помещается признак того, может ли описываемый элемент содержать значения NULL */ /* Задание значений набора полей в описателе CLI */ short SQLSetDescRec( long descHdl, /* Входной short recNr, /* Входной: short dataType, /* Входной: short subType, /* Входной: short length, short precis. short scale. void *dataBuf, short bufLen, short *indBuf) /* Входной: /* Входной: /* Входной: /* Входной: /* Входной: /* Входной: дескриптор описателя CLI */ номер записи в описателе CLI, для которой следует задать информацию */ код типа данных описываемого элемента (параметра запроса или столбца таблицы результатов запроса) */ дополнительный код типа данных описываемого элемента (если он содержит значение даты/времени) */ длина описываемого элемента */ точность представления описываемого элемента (если он содержит десятичное значение) */ степень масштабирования описываемого элемента (если он содержит десятичное значение) */ адрес буфера данных для описываемого элемента */ длина буфера данных */ адрес буфера, в который помещается признак того, может ли описываемый элемент содержать значения NULL */ Получение значения указанного поля из описателя CLI */ short SQLGetDescField( Входной: Входной: long short descHdl, recNr, /* /* дескриптор описателя CLI */ номер записи в описателе CLI, из которой следует извлечь информацию */ short attrCode, /* Входной: код запрашиваемого атрибута */ void *attrInfo, /* Выходной: буфер для значения атрибута */ short bufLen, /* Входной: длина буфера */ short *actLen) /* Выходной: указатель на буфер, в который записывается реальная длина полученных данных */ пкаи дпя обработки динамических запросов /* Задание значения указанного поля в описателе CLI */ short SQLSetDescField( long descHdl, /* Входной: short recNr, /* Входной: short void short attrCode, *attrlnfo, bufLen) дескриптор описателя CLI */ номер записи в описателе CLI, для которой следует задать информацию */ /* Входной; код описываемого атрибута */ /* Входной: буфер с новым значением атрибута /* Входной: длина буфера */ /* Копирует содержимое одного описателя CLI в другой */ short SQLCopyDesc( long inDscHdl, /* Входной; дескриптор исходного описателя CLI ♦/ long outDscHdl) /* Входной; дескриптор описателя CLI, в который копируются данные */ №иа 19 19. Функции CU, служащие для обрабсггки динамических запросов На рис. 19.20 предста1злена профамма, которая вьшолняет динамический запрос с использованием описанной методики. Ф>нкционально эта профамма идентична двум другим примерам профамм, выполняющим динамические запросы с помощью всфоенного SQL (рис. 18.9) и с помошью DB-Library (рис. 19.10). И снова, если вы сравните эти профаммы, то увидите, что в них вьшолняются совершенно разные команды (и с разными парамефами), но логическая схема их работы одинакова. Более того, последовательности вызовов функи;4й в профамме для SQL Server (рис. 19.10) и профамме, использующей CL1 (рис. 19.20), почти идентичны. Связка dbcmd О /dbsqlexec () /dbresults () заменяется функцией SQLExecDirect () (в данном случае запрос будет выполнен только один раз, поэтому нет необходимости в предварительной компиляции инсфукции). Функция dbnumcols () заменяется функцией SQLNumResultCols О. Функции, извлекающие информацию о столбце таблицы результатов запроса (dbcolname (), dbcoltype (), dbcollen ()), заменяются одной функцией SQLDescribeCol (). Роль функции dbnextrow () выполняет функция SQLFetch (). Остальные же модификации связаны с изменением синтаксиса API-функций. /* Эта программа запрашивает у пользователя имя таблицы и перечень столбцов, которые он хочет получить. После этого программа формирует и выполняет запрос и отображает его результаты. #include <sqlcli.h> /* файл с объявлениями структур и функций CLI */ main() { SQLHENV SQLHDBC SQLHSTMT env hdl; conn hdl; stmtl hdl; SQLHSTMT stmt2 hdl; SQLRETURN char char char char status; *svr name = *user name = *user pswd = demo ]oe xyz stmtbuf[2001] ; дескриптор среды SQL */ дескриптор сеанса подключения */ дескриптор инструкции для главного запроса */ дескриптор инструкции для запроса на выборку имен столбцов */ код, возвращаемый функцией CLI */ имя сервера */ имя пользователя для подключения */ пароль для подключения */ текст главного запроса / 19.20. Использование си, тнвния динамических эапроссщ.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |