Программирование >>  Sql: полное руководство 

1 ... 173 174 175 [ 176 ] 177 178 179 ... 264


/* Определение количества столбцов в таблице результатов запроса */

short SQLNumResultCols(

long StmtHdl, /* Входной: дескриптор инструкции */

short *colCount) /* Выходной: указатель на буфер, в который

записывается количество столбцов */

/* Получение основных short SQLDescribeCol (

long

StmtHdl,

Входной:

short

colNr,

Входной -.

char

*colName,

Выходной

short

bufLen,

Входной:

short

*namLen,

Выходной

short

*colType,

Выходной

short

*colSize,

Выходной

short

*decDigits,

Выходной

short

*nullable)

Выходной

атрибутов столбца таблицы результатов запроса */

дескриптор инструкции */ номер столбца, информацию о котором следует получить */ имя столбца */

длина буфера с именем столбца */ указатель на буфер, в который записывается реальная длина имени столбца */ указатель на буфер, в который записывается код типа данных столбца */

указатель на буфер, в который записывается размерность данных, содержащихся в столбце */ указатель на буфер, в который записывается количество десятичных цифр (если столбец содержит числовые данные) */ указатель на буфер, в который записывается признак того, может ли столбец содержать значения 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. Использование си,

тнвния динамических эапроссщ.



1 ... 173 174 175 [ 176 ] 177 178 179 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика