Главная » Просмотр файлов » Теория и практика построения баз данных

Теория и практика построения баз данных (1088289), страница 132

Файл №1088289 Теория и практика построения баз данных (Теория и практика построения баз данных) 132 страницаТеория и практика построения баз данных (1088289) страница 1322018-01-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 132)

Будем предполагать, что объект сопл содержит установленное соединение с базой данных Ч)евг Й)бде для Огас!е; Са11аЬ)е51а1епелг сз = соло.ргерагеСа11С(са11 Созгоггег!лзегг(?, ?, ?. ?))"); сз.зег51гглд(!. "Магу бо)глзол"); сз зе151гглд(2. "212"), сз.зе151гглд(3, "555- 1234"), сэ.ве151г1пд(4. 05"); сз ехесиге!); Эта последовательность, вызывающая хранимую процедуру Сцз1отег1пзегЕ с приведенными данными, очень похожа на ту, которая использовалась для ОЕ)ВС в предыдугцей главе. Можно также получать значения, возвращаемые процедурами, но этот вопрос выходит за рамки нашего обсуждения, Дальнейшую информацию вм найдете по адресу Ьар://)ачадшл.созг/ргобиса/)бЙ/1.1/босх/дц)бе/)бЬс.

На рис. 16.1 изображены все компоненты )Е)ВС, Приложение создает объекты Соппесвол, 51эгеглелг, Йегш!15е1и Йеьц!15е1мегэОа1а. Вызовы методов этих объектов перенаправляготся через диспетчер драйвера (объекг ОпчегМападег) соответствующему драйверу, а тот выполняет предписанные действия со своей базой данных. Обратите внимание, что база данных Огас!е на этом рисунке может обрабатываться либо через мост )Е)ВС-ООВС, либо с помощью чистого )Е)ВС-драГгвера.

Примеры использования 40ВС В листингах 16.1 и 16.2 показаны два примера использования драйверов )Е)ВС гппгэпузд! с СУБД Му5Я).. Обратите внимание, что обе эти программы импортируют)ачалд1*. Также обра гите внимание, что драйверы )Е)ВС не импортируются, а загружаются. Если вы попытаетесь их ггыпортггровагь, результатом будет неразбериха. Во всех этих примерах используется база данных Чгеуг Й)бде, изображенная на рис. 10.3, г. Она содержит следующие таблицы СО5ТОМЕЙ (Сизготег10, Мате, АгеаСобе, РЬопейатЬег, 51гееЬ С11у, 51э1е, 2!р) АЙТ15Т (АгВП10, Иагле, Иавопэ()гу, В!)ЕЬОа1е, ОесеазебОа1е) СО5ТОМЕЙ АЙТ15Т 1ИТ (Сииоглег10, АФз110) ВОЙК (Вогй10, Оезспрвоп, Т)1!е, Сору, Аг1)зЕТО); ТЙАИ5АСТ10И (Тгапзасбоп10, ОатеАсдц)геб, РцгсйагеРпсе, 5а!езРпсе, Сцвотег10, Вогй10) Связи и ограничения ссылочной целостности описаны в главе 10.

РОВС 61З за данных Мувод. за данных Огас)е База данных Огас)е База данных Воа Берег Рис. тели Компоненты ЗОВС рцЫтс с1азз Вепега1ТаЫе ( // Очистка гз с1озе (); зтют.с1озеО; сопл.с1озе(); сатсп (Ехсерттоп е) ( е.ршп15тасКТгасе(] ) 5тшпд чагТаЫейаще - агдз[0); 612 Глава 16. РОВС, Зача Вегчег Радев н МУЯОЕ Класс С)егвега!ТаЫе В листинге 16,1 показан)ата-класс белеса[Тай(е.

Он принимает один параметр — имя таблицы из базы данных Му5О). под названием чт1, МуВО1. чувствительна к реги- стру, и имена всех таблиц в базе данных пишутся заглавными буквами. Следователь- но, программа должна преобразовать введенное имя таблицы к верхнему регистру. Листинг 16.1.

Класс Вепега)ТаЫе тщрогт дача то,*; тюрогт Зача зц1.'; /** Програииа на Зача, выводящая содерщииое любой таблицы * При вызове передается один параиетр -- иня таблицьс * которое автоиатическн преобразуется к верхнеиу регистру */ рцЫ т с зтатт с чот 6 юатп (5тгз од [1 агдв) ( тТ (агдз 1епдтп <1) ( 5узтещ.оцт.рг)п11п (" предоставленных данных недостаточно." гебцгп: чагТаЫейале = чагТаЫейаюе.тоцррегСазе 1); 5узсещ. ои1. ргтпт)п СВыводится таблица" + чагтаЫейаще) сгу ( // Загрузка классов Му5ОЕ ЗРВС от Марка Мэтьюса // ююлувц1 )обо-1.2с С1азз.

Тогйаюе ("огд.дзт.ющлузц1.Рг!чег"). пен)пзтапсе О // Строка соединения указывает на вокальную базу данных Му561, О пользователь бд1 5тппд сопп51гтпд = "Зббс.юувц1: //)оса1йозс/чг1гшзег=бх1"; 5узтещ.оцт.рг)пс1п спопытка установления соединения с " + сопп5тш пд] Соппест)оп сопл = Ргтчегйападег .де1Соппес1топ(сопп5тгтпд) // Получаен набор результатов 51атеюепь зтют = сопп.сгеате5татеюелб () 5тгзпд чаг56[ = "5ЕЕЕСТ * ЕВОМ " + чагТаЫейаюе; Дезц1ь5ет гз = зтют.ехесцтеОцегу(чаг5О[) О Получаеи иетаданные, описывающие только что открытый набор О результатов дезц115етМетаРата гзнета = гз детйетаРата (): // Выводии ииена столбцов в вице строк 5тгтпд чагСо1йаюез тпт чагСо1Соипт = гзйета.деССо1июпСоцпт 1); Тог О пт со1 = 1; со1 <= чагСо1Соцптц со1++) ( чагСо1йащез = чагСо1йащез + гзйета.детСс1цюпйаще(со1) 5устес оцт.рг1п[1п(чагСо1йаюез); // Выводнн значения столбцов ыдт1е (гз.пенс/)) ( Гог (тпт со1 = 1; со1 <= чагСо1Соцпт; св1++) ( 5узтею. оцы рш от(гз дет5тгтод(со1) + " "); ) 5увтещ.оцт.

ргтл11п 1): 614 Глава 16. ЮВС, Зача Бегат Радев и ВлуВОС З[ЗВС 616 Данный пример является прямым приложением только что описанных нами идей. Класс Вепега[ТаЫе имеет общедоступный метод, не возвращающий значений (в этом и состоит значение слов роЬйс и чо[б). Программа проверяет наличие хотя бы одного параметра, записывает переданное ей пмя таблицы в переменную чагТаЫеМагпе и приводит это имя к верхнему регистру. Затем она обрабатывает базу данных в блоке 1гу с помощъю драйверов 1[)ВС. Блок 1гу используется потому, что многие методы генерируют исключения. Эти исключения будут перехвачены в блоке сатсП. В этих примерах оставлена стандартная обработка исключений. Если вы программируете на )ача, то, скорее всего, знаете много способов улучшить обработку исключений по сравнению с тем, что показано здесь.

Однако сейчас нас интересуют базы данных. Если вы не знакомы с программированием на [ача, просто представьте, что все операторы, помещенные внутрь блока 1гу, который обозначается «1гу(...)»,— это то, что происходит при нормальной работе. Все операторы, помещенные внутрь блока са1сП, который обозначается «са(сП(...)», — это то, что происходит, когда возникает ошибка.

Кроме того, по аналогии с БЯ[., в )ача многострочные комментарии начинаются с «/*» и заканчиваются на «*/». Однострочный комментарий начинается с «//». Драйверы пцпзпувг[1 загружаются, как описано выше, а затем создаются соединение (объект сопл) и оператор (объект вбгп1). Имя базы данных — чг1, имя пользователя — бК1. Пароль отсутствует. (Чтобы это работало, в МуБО[. нужно определить пользователя с именем ([К1 и наделить его полномочиями обращаться к базе данных чг1 без пароля.

Эти действия мы обсудим в последнем разделе главы.) Для набора результатов гв создается объект гз)деСа, содержагцнй метаданные. Из него считываются имена столбцов и затем выводятся в виде одной длинной строки (чагСо[оп)пйап)ев). После этого набор результатов перебирается, и каждая его строка выводится на экран. Результат выглядит не слишком красиво, но, по крайней мере, принцип ясен и все работает. Типичный результат работы программы выглядит следующим образом: 5Поы!пд ТвЫе АЯТ[5Т Тгутпд соппесттоп ытоб ЗДЬс вузц1://1осв1Повс/чг1?озег=бК1 Маве Мзт!опа1!1у В!гтлбаге Песеавепда1е Агт!з110 М!го 5рап1зП по11 по11 1 ТоЬеу 05 по11 по11 2 цап УгопКеп 05 по11 по11 3 Мвттззе РгепсП по11 по11 4 Как и говорилось, выглядит это не очень красиво.

Класс Соа1отег! лаем В листинге 16.2 показана вторая [ача-программа, которая обновляет базу данных чг1. Эта программа реализует логику процедуры Созсоптег1пзег1, описанную в главах 10, 12, 13 и 1 гт. (Вы еше не устали от этой процедуры? Что ж, по крайней мере, логика вам знакома!) Листинг !6.2. Класс Соз1огпег[пэег1 1врогс )ачв.то.*; тврогт дана.зц1.*; роЫ !с с1взз Созтовег1пзег1 ! /** Реализация на Зача процедуры Созтовег!пзегт для галереи У!вы д!Оде.

* Процедура принииает в качестве параметров икя клиента (Созтовегнаве), * его код региона (АгеаСобе). ноиер телевона (Соса1 МовЬег) и национальность * худоиников, которые его интересуют (Ма1топа1т 1у). Добавляет нового нлиентв, * если его еще нет в базе данных, и затеи ассоциирует денного клиента со всели * худоиникаии указанной национальности. добавляя соответствующие строки * в таблицу пересечений.

*/ роЫтс зта1тс чотб ва!п (51ппд П агдз) ! т( (агдз.!епдбП < 4) ( 5узтев.оо1.ргтп1[п (" предоставленных данных недостаточно"); гесогп; 51гтпц чагщаве = агдз(01: 51гзпд чагдгеаСобе = агдз(11; 51г!пд чагСоса1МовЬег - вгдз (21; 51гтпц чагыаттопа1тту = агцз(31; тпзегбда1а (чагыаве, чвгдгеаСобе, чаг' оса1МовЬег, чагнат!опв1!1у) роы1с з1а1!с чото тпзегтцата (51щпд чагмаве.

51гзпд чагдгеаСобе, 51г~пд чагцоса1ыовЬег, 51г! пд ча гыаг! опа1! 1у) 5уз1ел оо1.ргтп11п (" Добавляется строка для" + чвгщаве); сгу // Загрузка класса драйвера ЗВВС от Марка Мюьюса // вв.вузц1 )ОЬс-1. 2с С1азз. /огневе("огц.ддт. пв вуьд[. Пг1чег") -пеы1пзтвпсе(); // соединяеися с базой данных чг1 как пользователь ОК 1, без пароля 51г!пц сопп51гтпд = ")ОЬс вузц1:/У1оса1Позс/" + "чг1" + "?озегйбК1"; щюдаеяеениеФ ЛВС 617 Листинг 16.2 (продолженне) зтвт, с1озе() сопл,с1озеЩ): ге(игп: // Очистка гз. с1озеО зтвт. с)озе() солж с)озе() сатсб (Ехсер11оп е) ( е.рг1п151аскТгасеО 616 Глава 16. Ю8С, дана Зепгег Радев и Вду80С 5узтев.оит.рг(пт1п (кйопытка установления соединения с " + сопп5тг)пд); Соппест)оп сопл - Ог)чегиападег.детСоппес11оп(сопп51г)пд); О Соединение Установлено. Далее идет проверка на дублирование данных.

5(атевепт зтвт = сопл.сгеате51асевепт (); 5тг)пд чаг50С = "5ЕСЕСТ Иаве "; 51г(пд чагшиеге = вййОМ С05ТОМЕй ЫНЕйЕ шаве= '"; чагйбеге = чагйбеге + чагИаве + "' АИО АгеаСобе = '"; чагыбеге = чагибеге + чагдгеаСобе ч "' АИО РлопенивЬег - '"; чагнлеге = чагылеге + чагСоса)Иивбег + "'"; чаг50С = чаг50С + чагнбеге: йеви)15ет гз - ятвт .ехеситеОиегу (чаг50С) : шб~)е (гв .пех1 () ) ( О Инеются дублируювиеся данные 5узтев, оис .рг1пс)п (" Указанный пользователь уже инеется в базе.

Характеристики

Тип файла
DJVU-файл
Размер
9,56 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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