Выборка данных из результирующего множества в ODBC — КиберПедия 

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Выборка данных из результирующего множества в ODBC

2023-01-02 38
Выборка данных из результирующего множества в ODBC 0.00 из 5.00 0 оценок
Заказать работу

 

Цель работы: изучить функции ODBC для выборки данных из результирующей таблицы, изучить скроллируемые курсоры в ODBC, приобрести навыки использования данных функций при разработке клиентских приложений баз данных.

 

Порядок выполнения работы и варианты заданий

1. Изучить программный интерфейс функций SQLFetch, SQLBindCol, SQLGetData, SQLExtendedFetch, SQLSetStmtOption.

2. Написать на языке программирования высокого уровня С/C++:

а) программу для создания курсора в ODBC. Определение курсора берется из вариантов заданий к лабораторной работе N 2. При нечетном номере варианта задания следует использовать статические курсоры, а при четном – динамические.

б) программу для просмотра результирующей таблицы с использованием функций SQLFetch и SQLBindCol (для нечетного номера варианта задания) и функции SQLGetData (для четного номера варианта задания);

в) программу для различных типов выборки строк из результирующей таблицы с использованием функции SQLExtendedFetch. Пользовательский интерфейс программы должен включать элементы управления (например, кнопки, диалоговые окна и т.д.) для показа первой, последней, следующей и предыдущей строк, а также строк с абсолютным и относительным номером N.

3. Запустить ODBC-администратор и с его помощью выбрать ODBC-драйвер для используемого в программе источника данных.

4. Выполнить программу, разработанную в п.2.

5. Оформить отчет о проделанной работе.

 

Основные сведения

 

Функция SQLBindCol

Данная функция назначает область хранения в памяти и тип данных для столбца результирующей таблицы. Функция SQLBindCol имеет следующий синтаксис:

RETCODE SQLBindCol(hstmt, icol, fcType, rgbValue, cbValueMax, pcbValue)

Описание параметров для данной функции приведено в следующей таблице.

 

Аргумент Тип Использование Описание
hstmt HSTMT Вход Идентификатор оператора
icol UWORD Вход Номер столбца
fCType SWORD Вход С-тип данных столбца
rgbValue PTR Вход Область хранения данных (адрес)
cbValueMax SDWORD Вход Максимальная длина области хранения
pcbValue SDWORD FAR* Вход Длина столбца выборки (адрес)

 

Столбцы результирующей таблицы нумеруются слева направо, начиная с 1.

 

Функция SQLFetch

Данная функция извлекает очередную строку данных из результирующей таблицы, причем возвращаются данные для всех столбцов, которые были связаны с помощью функции SQLBindCol. Синтаксис функции SQLFetch:

RETCODE SQLFetch(hstmt),

где hstmt – идентификатор оператора (входной аргумент типа HSTMT).

 

Функция SQLGetData

Эта функция позволяет выполнить выборку данных из столбцов, которые не были связаны с помощью функции SQLBindCol. Функция SQLGetData имеет следующий синтаксис:

RETCODE SQLGetData(hstmt, icol, fCType, rgbValue, rgbValueMax, pcbValue)

Данная функция имеет те же параметры, что и функция SQLBiindCol. Функция SQLGetData полезна в тех случаях, когда нет нужды выполнять выборку одних и тех же столбцов для каждой строки результирующей таблицы при вызове SQLFetch.

 

Функция SQLExtendedFetch

 

Данная функция используется вместо функции SQLFetch для выборки строк результирующей таблицы. Функция SQLExtendedFetch расширяет функциональность функции SQLFetch, поскольку предусматривает блочные и скроллируемые (перемещаемые) курсоры. Функция. SQLExtendedFetch имеет следующий синтаксис:

RETCODE SQLExtendedFetch(hstmt,fFetchType, irow, pcrow, rgfRowStatus)

Описание параметров функции приведено в следующей таблице.

 

Аргумент Тип Использование Описание
hstmt HSTMT Вход Идентификатор оператора
fFetchType UWORD Вход Тип выборки
Irow SDWORD Вход Число строк выборки
pcrow UDWORD FAR * Выход Число реально извлеченных строк (адрес)
rgfRowStatus UWORD FAR * Выход Массив значений состояния для извлеченного множества строк

 

ODBC поддерживает статические и динамические курсоры. Статические курсоры нечувствительны к изменениям базовых таблиц, а динамические являются полностью чувствительными.

Движение курсора устанавливается с помощью параметров fFetchType и irow. В приведенной ниже таблице определены значения параметра fFetchType и соответствующие им результаты выборки функции SQLExtendedFetch.

 

FFetchType Действие SQLExtendedFetch
SQL_FETCH_NEXT Следующее строковое множество
SQL_FETCH_PRIOR Предыдущее строковое множество
SQL_FETCH_RELATIVE Строковое множество, начиная с N-й строки по отношению к текущей позиции курсора
SQL_FETCH_FIRST Первое строковое множество
SQL_FETCH_LAST Последнее строковое множество
SQL_FETCH_ABSOLUTE Строковое множество, начиная с N-й строки

 

В приведенной таблице значение N определяется параметром irow. В данной лабораторной работе не используются блочные курсоры, по умолчанию считается, что строковое множество состоит из одной строки.

 

Методические указания

Создание курсора в ODBC не предполагает использование SQL-оператора объявления курсора. Курсор создается автоматически при выполнении оператора выборки SELECT. При этом идентификатор данного оператора SELECT должен использоваться для выборки данных из результирующей таблицы.

При выполнении данной лабораторной работы в полном объеме используется алгоритм использования ODBC, приведенный в описании лабораторной работы N 3.

Для выборки всех данных из заданных столбцов результирующей таблицы с помощью функций SQLBindCol и SQLFetch следует использовать следующий алгоритм:

1. Вызвать функцию SQLBindCol один раз для каждого столбца, который должен быть возвращен из результирующей таблицы.

2. Вызвать функцию SQLFetch для перемещения курсора на следующую строку и возврата данных из связанных столбцов.

3. Повторить шаг 2 до тех пор, пока функция SQLFetch не возвратит SQL_NO_DATA_FOUND.

Для выборки всех данных из заданных столбцов результирующей таблицы с помощью функций SQLGetData и SQLFetch следует использовать следующий алгоритм:

1. Вызывать функцию SQLFetch для перемещения курсора на следующую строку.

2. Вызвать функцию SQLGetData для каждого из заданных столбцов.

3. Повторить шаги 1 и 2 до тех пор, пока функция SQLFetch не возвратит SQL_NO_DATA_FOUND.

Прежде чем использовать перемещаемые курсоры, необходимо проверить, поддерживает ли драйвер функцию SQLExtendedFetch. Затем рекомендуется проверить, какие типы выборки допускает курсор (см. лабораторную работу N 3, варианты заданий типа B NN 4-9). После этого необходимо установить тип курсора (скроллируемый) с помощью функции SQLSetStmtOption. Пример вызова функции SQLSetStmtOption:

Rc=SQLSetStmtOption(hstmt, SQL_CURSOR_TYPE,

 SQL_CURSOR_DYNAMIC);

В данном случае выбран динамический курсор. Для выбора статического курсора необходимо использовать опцию SQL_CURSOR_STATIC.

 

Библиографический список

1) Роберт Сигнор, Михаэль О. Стегман. Использование ODBC для доступа к базам данных. - М.: БИНОМ, 1995. - 384 с.

2) Кузнецов С.Д. Стандарты языка реляционных баз данных SQL: краткий обзор // СУБД. - N 2, 1996. - C.6-36

3) Венкатрао М., Пиццо М. SQL/CLI - новый стиль связывания для SQL // СУБД. - N 2, 1996. - C.37-44

4) Боуман Дж., Эмерсон С., Дарновски М. Практическое руководство по SQL. - М.: Диалектика, 1997. - 320 с.

5) Райан Стивенс, Рональд Р. Плю. SQL. - М.: БИНОМ, 1997. - 400 с.

6) Горев А., Ахаян Р., Макашарипов С. Эффективная работа с СУБД. - СПб.: Питер, 1997. - 704 с.

7) Соломон Девид и др. Microsoft SQL Server 6.5. Энциклопедия пользователя. - К.: ДиаСофт, 1998. - 784 с.

8) Джеймс Р.Грофф, Пол Н. Вайнберг. SQL: Полное руководство. - К.: BHV, 1998. - 608 c.

9) Ладани Ханс. SQL. Энциклопедия пользователя. - М.: ДиаСофт, 1998. - 624 с

10) Горелов А., Макашарипов С., Владимиров Ю. Microsoft SQL Server 6.5 для профессионалов. - СПб: Питер, 1998. - 464 с.

11) Роберт Д. Шнайдер. Microsoft SQL Server. Проектирование высокопроизводительных баз данных. - М.: ЛОРИ, 1998. - 361 с.

12) Рон Саукап. Основы Microsoft SQL Server 6.5. – М.: Издательский отдел “Русская редакция” ТОО “Channel Traiding Ltd”. – 1999. – 704 c.

13) Уанкуп Д. MS SQL Server 6.5 в подлиннике. – М.: Издательский дом “Вильямс”, 1999. – 912 с.

14) Тихомиров Ю.В. Microsoft SQL Server 7.0: разработка приложений. - СПб.: BHV. - 1999. - 352 с.

15) Хансен Г., Хансен Дж. Базы данных: разработка и управление: Пер. с англ. - М.: БИНОМ, 1999. - 704 с.

16) Дунаев С. Доступ к базам данных и техника работы в сети. Практические приемы современного программирования. – М.: Диалог-МИФИ, 1999. – 416 с.

 


ПРИЛОЖЕНИЕ


Поделиться с друзьями:

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.016 с.