Популярные услуги

Все письменные КМ под ключ за 3 суток! (КМ-6 + КМ-7 + КМ-8 + КМ-9 + КМ-10)
КМ-6. Динамические массивы. Семинар - выполню любой вариант!
КМ-2. Разработка простейших консольных программ с использованием ООП + КМ-4. Более сложные элементы ООП - под ключ!
Любая задача на C/C++
Одно любое задание в mYsql
Сделаю ваше задание: Лабораторная работа на Pascal / Lazarus
Любой тест по базам данных максимально быстро на хорошую оценку - или верну деньги!
Любой реферат по объектно-ориентированному программированию (ООП)
Оба семинара по программированию под ключ! КМ-2. Разработка циклических алгоритмов + КМ-3. Функции и многофайловые программы в Си
Повышение уникальности твоей работе

Организация доступа к БД из ПП

2021-03-09СтудИзба

1. Организация доступа к БД из прикладных программ

2. Понятие курсора

Язык SQL  предназначен для организации доступа к БД. Доступ к данным может быть осуществлен в 2-х режимах:– интерактивном и в режиме выполнения приложений. SQL  не является языком программирования. Для создания приложений используются  другие языки, в которые встраиваются операторы SQL. Все возможности интерактивного языка запросов доступны и в прикладном программировании

Существует 2 способа применения SQL в прикладных программах:

· Встроенный SQL. При таком подходе операторы SQL непосредственно встраиваются в исходный текст программы на базовом языке. При компиляции программы со встроенными операторами SQL используется специальный препроцессор SQL, который преобразует исходный текст в исполняемую программу.

· Интерфейс программирования приложений (API). При использовании этого метода прикладная программа взаимодействует с СУБД путем применения специальных функций. Вызывая эти функции, программа передает СУБД  операторы SQL и получает обратно результаты запросов.

При объединении операторов SQL с базовым языком программирования соблюдаются следующие принципы:

· Операторы SQL включаются в текст программы на исходном языке программирования. Исходная программа поступает на вход препроцессора, который компилирует операторы SQL.

· Встроенные операторы SQL могут ссылаться на переменные базового языка программирования.

Рекомендуемые материалы

· Встроенные операторы SQL  получают результаты SQL запросов с помощью переменных базового языка программирования.

· Для обеспечения построчной обработки результатов запроса во встроенный SQL добавлено несколько новых операторов, отсутствующих в интерактивном SQL.

При встраивании  в программу операторов манипулирования данными  они не требуют никаких изменений. Изменений требует только оператор SELECT. В интерактивном SQL  набор данных, возвращаемый оператором  SELECT, просто выводится на экран. Встроенный в программу оператор SELECT  должен создавать структуры данных, которые согласуются с базовым языком программирования. Во встроенном SQL запросы делятся на 2 типа:

· Однострочные. Строка может содержать значения нескольких столбцов.

· Многострочные запросы. При этом приложение должно иметь возможность обработать все строки. Значит должен существовать механизм, поддерживающий просмотр и обработку большого числа строк.

Вывод запроса трудно передать переменным, если неизвестно, насколько велики будут результаты вывода. В SQL  это осуществляется с помощью курсора.

 Первый тип запроса во встроенном SQL вызвал модификацию оператора SELECT, который выглядит следующим образом:

SELECT < список атрибутов>

INTO <список переменных базового языка>

FROM

WHERE 

 В указанные переменные будет помещен результат однострочного запроса, поэтому список переменных должен быть согласован как по порядку, так и по типу данных со списком возвращаемых атрибутов.

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

Курсор – это вид переменной, которая связана с запросом. Значением этой переменной может быть каждая строка, которая выводится при запросе.  Курсор должен быть объявлен прежде, чем он будет использован с помощью команды DECLARE CURSOR. Оператор определяет исполняемый запрос, задает имя курсора и связывает результаты запроса с заданным курсором.

DECLARE STIPCUR CURSOR

FOR

SELECT  NOM_ZACH,SFAM,STIP

FROM STUDENTS

WHERE STIP=30;

Этот запрос не будет выполнен немедленно, так как в данном случае представлено только его определение. Курсор напоминает представление, в котором определение содержит запрос, а содержательной частью является любой вывод запроса, и это происходит каждый раз, когда курсор становится открытым. Однако в отличие от базовых таблиц или представлений, строки курсора упорядочены и имеются первая, вторая и т.д., а также последняя строка.

Оператор OPEN CURSOR  дает команду СУБД выполнить описанный запрос, создать виртуальный набор строк, который соответствует заданному запросу. Оператор OPEN устанавливает курсор (указатель записей) перед первой строкой виртуального набора строк результата.

Итак, когда в программе необходимо выполнить запрос, то открывают курсор с помощью следующей команды:

EXEC SQL OPEN CURSOR STIPCUR;

Значения в курсор передаются именно тогда, когда выполняется приведенная выше команда.

После открытия указатель текущей строки установлен перед первой строкой  курсора.

 Команда FETCH перемещает указатель текущей строки в виртуальном наборе записей  на следующую строку и присваивает базовым переменным значения столбцов, соответствующие текущей строке. В большинстве коммерческих СУБД оператор FETCH реализует более широкие функции перемещения, перемещая указатель на произвольную запись, на первую, последнюю и т.д.

Например:

EXEC SQL FETCH STIPKUR INTO : @NOM_ZACH, @SFAM, @STIP;

Эта  конструкция присвоит значение из первой выбранной строки в переменные памяти. Следующая команда FETCH выведет очередной набор значений и.т.д. Как правило,  команду FETCH помещают внутрь цикла так, чтобы, выбрав строку из курсора, можно было осуществить перемещение набора значений из этой строки в переменные, возвратиться обратно и переместить следующий набор значений в эти же переменные.

Оператору OPEN CURSOR должен соответствовать оператор CLOSE CURSOR. Оператор закрытия курсора закрывает временную таблицу созданную оператором открытия курсора и прекращает доступ прикладной программы к этому объекту.

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

 DELETE FROM <имя таблицы> WHERE CURRENT OF <имя курсора>

Если указанный курсор открыт, и установлен на некоторую строку, то данная строка удаляется. Для того чтобы прочитать следующую строку необходимо выполнить оператор FETCH NEXT.

Аналогично выполняется команда обновления. Для того чтобы можно было применять позиционные команды удаления и обновления, курсор должен удовлетворять определенным требованиям: запрос, связанный с курсором должен считывать данные только из одной таблицы; в запросе не должно быть предложения ORDER BY, для того чтобы сохранялось взаимно однозначное соответствие строк курсора и исходной таблицы; запрос не должен содержать предложения GROUP BY или HAVING.

 Курсор представляет собой удобное средство для формирования бизнес - логики приложений, но следует иметь в виду, что если открывается курсор с возможностью модификации, то СУБД блокирует все строки базовой таблицы, вошедшей в курсор,  и тем самым блокируется работа других пользователей  с данной таблицей.

В развитых моделях серверов БД большая часть бизнес логики приложения выполняется на сервере с использованием хранимых процедур. В связи с этим курсоры разделяются на курсоры сервера и курсоры клиента. Курсор сервера создается и выполняется на сервере,  и определяются обычно в хранимых процедурах или триггерах. Курсоры клиента определяются в прикладных программах, выполняемых на клиенте. Набор строк, связанный с данным курсором, пересылается на клиент и там обрабатывается. Если с курсором связан большой набор данных, то операция пересылки набора строк, связанных с курсором, может занять значительное время и значительные ресурсы сути и клиентского компьютера. С этой точки зрения курсоры сервера более экономичны и выполняются быстрее.

3. Интерфейс прикладного программирования

Альтернативным подходом, используемым некоторыми разработчиками СУБД, является предоставление в распоряжение программиста библиотеки стандартных функций (API- программный интерфейс пользователя). Функции вызываются из создаваемых пользователем прикладных программ.

Хотя это не является требованием стандарта, многие распространенные СУБД включают   соответствующие API. С помощью функций API осуществляется подключение к базе данных, например, ConnectBD(User,Passw), или dbopen((User,Passw) и построение SQL оператора (например, dbsqlexec()) и т.д.

Поставляемые разными разработчиками прикладные API имеют значительные различия. При необходимости использования одной и той же программы в среде разных СУБД необходимы разные  ее версии, ориентированные на АPI разных СУБД.

 Фирма Microsoft разработала стандарт ODBC (Open Database Connectivity). Эта технология предусматривает использование единого интерфейса для доступа к  смешанным базам данных SQL. Данный интерфейс, который встраивается непосредственно в язык программирования (например, С) обеспечивает высокую степень универсальности, в результате чего одно и то же приложение может получать доступ к данным, хранящимся в базах различных целевых СУБД, без необходимости внесения изменений в текст программы.

В приложение, обращающееся к базе данных, записываются вызовы функций ODBC. Для каждой системы управления базами данных разрабатывается драйвер ODBC, реализующий эти функции для конкретной СУБД.  Для связи приложения с любой выбранной целевой СУБД пользователю достаточно иметь  соответствующий ODBC-драйвер. (Драйвер ОDBC для MS SQL Server  устанавливается одновременно с установкой утилит сервера).

Утилита Источники данных ODBC позволяет настроить соединение ODBC для получения доступа к объектам баз данных. Для запуска утилиты следует выбрать соответствующий значок в панели управления Windows. Диалоговое окно утилиты открывает доступ к настройке трех типов источников данных (DSN – Data Source Name: системный DSN, файловый DSN и пользовательский DSN).   Драйвер просматривает приложение, находит обращения к базе данных, передает их СУБД, получает от нее результаты и подставляет их в приложение. Идея оказалась очень удачной, и использование ODBC для работы с базами данных стало общепринятым.

4. Архитектура ODBC

В интерфейс ODBC включены следующие элементы:

1. Библиотека функций, вызов которых позволяет подключаться к базе данных, выполнять SQL- операторы и извлекать информацию из результирующих наборов данных.

2. Стандартный механизм подключения и регистрации в СУБД.

3. Стандартное представление для данных различных типов.

4. Стандартный набор кодов ошибок.

5. Типовой синтаксис SQL-операторов, построенный на использовании спецификаций X/Open и  ISO CLI.

Архитектура ODBC

Рисунок 11


Общая архитектура ODBC (см. рисунок 15) включает 4 элемента:

· Приложение, которое выполняет обработку данных и вызов функций библиотеки ODBC для отправки SQL- операторов в СУБД и выборки возвращаемой СУБД информации.

· Менеджер драйверов – выполняет загрузку необходимых драйверов по требованию приложения. Менеджер драйверов был разработан компанией Microsoft  и представляет собой библиотеку DLL.

· Драйверы и агенты баз данных  обрабатывают вызовы функций ODBC  и направляют SQL-запросы конкретным источникам данных, а также возвращают полученные результаты приложению. При необходимости драйверы выполняют модификацию исходного запроса с целью приведения его в соответствие с синтаксическими требованиями целевой СУБД. Драйверы могут предоставлять только те возможности, которые обеспечиваются целевой СУБД. В архитектурном решении с использованием нескольких ODBC- драйверов все перечисленные задачи решаются самим ODBC-драйвером, и  использовать агенты БД не требуется. В случае использования единственного драйвера для каждого типа СУБД потребуется применение агентов базы данных, размещаемого  на стороне сервера. При обработке запросов на доступ к базе данных эти агенты тесно сотрудничают с ODBC драйвером, расположенным на стороне клиента. В среде Windows единый ODBC-драйвер реализован в виде библиотеки DLL. Агенты баз данных реализуются как процессы, выполняемые на сервере целевой СУБД.

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

5. КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Назовите способы использованием языка SQL в прикладных программах.

2. В чем заключаются отличия  интерактивного и встроенного  в прикладные программы  оператора SELECT?

3. Какого вида запросы возможны при использовании встроенного SQL?

4. В чем заключается модификация оператора SELECT при его использовании для создания однострочных запросов?

Обратите внимание на лекцию "1.3. Представление информации".

5. Объясните смысл понятия курсора при работе с многострочными запросами. Какие операторы служат для создания и использования курсоров.

6. Какие ограничения накладываются на запрос, связанный с курсором при выполнении команд обновления и удаления данных?

7. Для чего предназначена технология ODBC?

8. Как происходит настройка соединения ODBC для получения доступа к данным?

9. Какие элементы включает архитектура ODBC?

10. Для чего предназначены  драйверы ODBC?

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5161
Авторов
на СтудИзбе
439
Средний доход
с одного платного файла
Обучение Подробнее