Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Топ:
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Интересное:
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Цель работы: изучить функции 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 с.
ПРИЛОЖЕНИЕ
|
|
|
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!