Теория и практика построения баз данных (1088289), страница 129
Текст из файла (страница 129)
ОВВС, ОСЕ ОВ, АОО и АЯР Примеры использования АОО 599 Листинг 16.7 (продолжение) Р апЬзр: ГОНТ Су!е="ВАСКВЙООИО-СОСОК: (/Ггтттт" апЬзр: апЬзр:апЬ р; /ГОИт апЬзр; апЬзр; апЬзр: алЬ р; ГОИт зту!е=-ВАСКВЙООИО СОСОК: ()т'ттГГГ'> <1ИРОТ !О=зиьа('с1 паве-зиьа!т! Суре=зоба!С ча!ие="ЯОО Сизтоаег" >апЬзр: апЬзр: апбзр; <1ИРОТ !б-гезес! паве=лезет! туре=лезет ча!ие-"йезет На1иез"></ГОНТ></Р> </ГОЙМ> </ОООН> </НТМС> Листинг 15.8. Вызов хранимой процедуры с помощью Сиз(отлет!пеег(Огас!е.азр <НТМС> <НЕАО> МЕТА НТТР-Е00(ччлсоптепь-Туре" СОИТЕИТ-гбехт/Пта);спагзес=ытпбоыз-1252" <Т1ТСЕ>сизтовег 0рба(е 01зр1ау Раде</Т1ТСЕ> </НЕАО> <ОООН> <Р><ЬТКОИЬ ГОНТ со1ог-ригр1е тасе="" гй ее=в>апьзр апЬзр: Сизтовегз апб 1псегезтз АГ(ег орбате</ГОНТ /ЬТЙОИЬ> <!"Ф!Пс!ибе ч!гтиа)="Ч!еый1бдеЕхаар!е1/абочьз.1пс"--> <Ж Отв оь)сопл.
оЬ)Соааапб. оЬбрагав, ойв 01в оьбйесогб5ес. оьб Г1е!о 01в чаг1. чаг5ц!. чагйивСо!з. чагЧа1ие 1т 1зОЬОест(5езз(оп(" сопл")) Тлел Ьет оЬОСопп = Ьезмоп(" сопл") ' используем текущий сеанс если зто возиожно Е1зе Ьеь оЬОСопп = 5егчег.СгеатеОЬбест("А0008. соппесттоп") ' хранимая процедура установит свой собственный уровень изоляции оьзсопп.орел "Ч!еыйтбдеогас!е", "зузтеа", "аападег" ' используеи зто ' для обновления ' через Огас1е 'оЬОСопп.орел "Ч!еьй1бде55". "за" ' а зто можно было бы использовать ' для обновления через ЬОС 5егчег Ьет Ьезя1оп(" сопл") - оЬОСопп Епб 1Г Ьес оь)Соааапб = Ьегчег.сгеасеоь)есжс'АОООВ,согпаапо") ' создаеи обьект совввпб Ьет оь,тсоааапб.
Асвтчесоппесс!ап - об!сопл ' устанавливаеи соединение ' для обьекта соваапб аь)сощяапб.сотаапбтехт-"(са!! Сизтсвег (пзегь (?, ?, ?. ?))" ' готовии вызов ' хранимой процедуры ' Присваиваем необходииые значения четыреи параиетраи Ьет оь)рагав = оь)соалапб.сгеатеРагааетег("Иеемаве". абСПаг, абРагав)прис, ЬО) оь)соввапб. Рагаветегз. Аррепб оЬОРагаа оьзрагав. Ча!ие = йециезт. Гога(кбехт!") Ьет оЬ)рагаа = оь)соа)впб.сгеатеРагааеьег("Агеасобе", абСПаг, абРагав!прис, 5) оь)совпапб. Рагааетегв. Аррепб оь)рагаа оьзрагав. Ча1ие = йециезС.Гога(гбехт2") Ьеь оЬ)Рагаа = оЬ)Соваапб. Сгеате Рагааетег('РПопейивьег", абСПаг, абРагаа!Прот, 8) оЬ)соввапб, Рагаветегз. Аррепб оЬЗРагаа оь)Рагаа. Ча1ие = Кециезт.Гога(гаек(3") Ьеь оббрагаа = оь)согпвапб.сгеаьерагаветегт'Дат!опа)1ьу", абСПаг, абРагаа1при!.
25) оЬВСоятвапб. Рагааетегз,яррепб оЬОРагав оь)Рагаа. На1ие - йециезС.Гога(гбехтд") Вызываен хранииущ процедуру Ьет ойз = оь)соавапО.Ехесите ' пои геаб Спе бата Ггоа а чтем Пачц лд Ьоть С05ТОМЕЙ апб АКТ15Т чаг5ц1 = "ЬЕСЕСТ * ГЙОМ С05ТОМЕй1ИТЕЙЕЬТ5" ' используем соединение через ' таблицу пересечений Ьес оь)йесогОЬет = Ьегчег.сгеатеОЬ)ест("АОООВ. Йесогбзет") оьЗйесогб5ет,орел чаг5ц1, оь)Сопл Ж> <ТАВСЕ ВОКОЕй=1 ВВСОСОК=ФТГГГГГ СЕСЕЬРАС1ИО-Ь ГОНТ ГАСЕ="Аг!а1" СОСОК-()Оочооо><САРТ)ОИ><в><СОЬТОМЕЙЬ АИО 1ИТЕКЕЬТ5</В></САРТ!ОИ></ГОНТ> <ТНЕАО> <Тй> <Ж чагыиаса!з = оЬбйесогб5еС.Гте1бз,Соипт Гог чаг) = О Со чагыивСо1з - 1 Ьет оЬ!Г(е!б = оЬ!Йесогб5еС,Гте1св(чаг1) Ж> <ТН ВЯСОСОЙ=((сососо ВОЙОЕКСО!Ой =ФОООООО ><ГОНТ 512Е 2 ГАСЕ-"Аг1а1" сОСОЙ=ФООсооо ж=оьбг1е!б.иааеж></гоит></тн> <Ж </Тй> </ТНЕАО> <тВООН> <Ж Оп Еггог Кезиае Иехт оЬВйесогб5еС.МочеГ1гзт мдедояжеиыеФ 600 Глава 15.
0()ВС, ОСЕ 08, А00 и АЯР Резюме 601 Листинг 15.8 (продолжение) г)о чгп1)е Мо1 оЬ1Йесого5е1.еоТ $> <ТЙ НАС!ОЙ=ТОР> <Ф чагниягСо1з = оЬ)Йесогг)5е1.Г1е1оз.Сонп1 Гог чаг1 = 0 го чагния)Со!я - 1 5ег оЬ)Г1е)г) - оЬ)Йесогг)5еЬ.Г1е!г)я(чаг!) 1г оЬ)Йесог05ет.Г(е!г)з(чаг!).Туре = аг)Иагяег(с Феп чагча1ие=СОЬ)(оЬ)Г1е1г).На)ие) чагча!пе = сопчегт(сваг, чагча)ие) е1зе чагча!не=5егчег.НТМЕЕлсоое(оЬ)Где!0.Уз!не) Елг) !1 т> <ТО ВОЙОЕЙСОЕОЙ=№сОсОсО ><ГОНТ 5ПЕе2 ГАСЕ="Яг)а1" СОЕОЙ=№000000><Ж=(чагча1ие)Ж><ВЙ></ГОНТ></ТО> <ч чагча)не="" ИехЬТ> </ТЙ> <$ оЬ1Йесогг)5ет.МочеИехЬ )оорЪ> </ТВООУ> <ТГООТ></ТГООТ> </ТАВЕЕ> </ВОВУ> </НТМС' Эта страница ищет сохраненный объект Соппесйоп и, если не находит такового, создает новое соединение, как показано в предыдущих примерах.
Затем она создает команду оЬ)Соввапг! и связывает ее с соединением оЬ)Сопл. После этого задается шаблон вызова хранимой процедуры Снзтовег 1пзегг строкой «Соввапг(?ехг="(са(! СнзЬовег 1пзег((?,?,?,?))». Четыре знака вопроса указывают на то, что процедуре будет передано четыре параметра. Далее создаются параметры и присоединяются к объекту-команде.
В конце происходит запуск команды, что приводит к вызову хранимой процедуры. Уровень изоляции транзакции и свойства курсора не задаются, так как хранимая процедура установит их самостоятельно. После выполнения команды создается набор записей, содержащий все столбцы представления С05ТОМЕЙ1ИТЕЙЕ5Т5, и данные из него отображаются в браузере так же, как показано в предыдущих примерах. В обеих базах данных — как Огас!е, так и БЯТ Бегчег — представление С05ТОМЕЙ1ИТЕЙЕ5Т5 было определено как соединение таблиц С05ТОМЕЙ и АЙТ15Т через таблицу пересечения. Для Огас!е использовался следующий синтаксис: СЙЕАТЕ У!ЕИ С05ТОМЕЙ(МТЕЙЕ5Т5 А5 5ЕЕЕСТ С05ТОМЕЙ.ИАМЕ С05ТИАМЕ, АЙТ!5Т МАМЕ АЙТ15 ИАМЕ, АЙТ15Т МАТ!ОМАЕ!ТУ ГЙОМ С05ТОМЕЙ, С05ТОМЕЙ АЙТ15Т !МТ, АЙТ15Т ННЕЙЕ С05ТОМЕЙ.С05ТОМЕЙ10 = С05ТОМЕЙ АЙТ!5Т 1ИТ.С05ТОМЕЙ10 АИО АЙТ15Т.АЙТ!5Т10 = С05ТОМЕЙ АЙТ15Т 1ИТ.АЙТ!5Т10 ОЙОЕЙ ВУ С05ТИАМЕ Эта страница интересна тем, что единственное различие между приведенной здесь версией для Огас1е н версией для 5(11.
Бегчег заключается в имени источника данных ОЕ)ВС, имени учетной записи и пароле. Обратите внимание на строку комментария под оператором оЬ)Сопл.Орел: все особенности конкретных СУБД содержатся в хранимых процедурах, и разработчику АБР-страницы ничего не нужно знать о них. Эти примеры дают представление об использовании АРО. Лучший способ узнать об этом больше — написать несколько страниц самостоятельно.
В данной главе описаны все основные методики, которые вам потребуются, Вам пришлось немало потрудиться, чтобы дойти до этого места, и если вы понимаете достаточно для топь чтобы написать собственную АЯР-страницу, то вас можно поздравить — вы многого достигли с первой главы! Резюме Приложения баз данных, использующие интернет-технологии, находятся в богатом и сложном по составу окружении. Кроме реляционных баз данных, существуют также нереляционные базы данных, системы обработки файлов, подобные УЗАМ, электронная почта и другие типы данных — изображения, звуковые файлы и т. д.
Для облегчения труда прикладных программистов был разработан ряд стандартов. Стандарт ОРВС предназначен для работы с реляционными базами данных, а стандарт ОТ Е РВ позволяет работать как с реляционными, так и с нереляционными базами данных. С целью обеспечения более легкого доступа к функциональности ОБЕ РВ для программистов, не знакомых с ООП, был разработан стандарт АРО.
ОРВС, или открытый стандарт взаимодеяствия баз данных, предоставляет интерфейс, с помощью которого программы на тчеЬ-сервере могут обращаться к реляционным источникам данных и обрабатывать данные из них независимым от СУБД способом. Стандарт ОРВС был разработан производственным комитетом и реализован многими производителями, в том числе М!сгозо(г. ОРВС включает в себя прикладные программы, диспетчер драйвера, драйвер СУБД и компоненты источника данных.
Существует два типа драйверов: одноуроаневые и многоуровневые. Есть также три типа источников данных: файловые, системные и пользовательские. Системные источники данных рекомендуются для тчеЬ-серверов. При определении системного источника данных необходимо указать тип драйвера и идентификатор используемой базы данных. ОЕЕ Р — это то, на чем основан доступ к данным в мире М!сгозо(г. Данный стандарт реализует спецификации М!сгозо(г ОТ Е и СОМ и доступен объектно- 602 Глава 15. 011ВС, ОСЕ ОВ, АВО и АЯР Вопросы 1 группы 603 ориентированным программам через данные интерфейсы.
ОСЕ РВ разбивает возможности и функции СУБД на объекты, что упрощает для производителей реализацию функциональности по частям. Ключевыми терминами являются абстракция, метод, свойство и коллекция. Набор строк является абстракцией набора записей, который, в свою очередь, является абстракцией отношения. Объекты имеют свойства, описывающие их характеристики, и методы — действия, которые они могут выполнять. Коллекция — зто объект, содержащий группу других объектов. Цели 01Е РВ перечислены в списке. Интерфейс — зто объект, предоставляющий доступ к некоторому множеству свойств и методов набора объектов. Различные интерфейсы могут предоставлять доступ к разным методам и свойствам одного и того же набора объектов.
Реализация — зто способ выполнения задач объектом. Реализация скрыта от внегннего мира, и ее можно изменять, не затрагивая пользователей объектов. Интерфейс не должен меняться никогда. Поставщики табличных данных представляют данные в виде наборов строк. Поставщики услуг преобразуют данные в другую форму; такие поставщики одновременно являются и потребителями данных. Набор строк зквивалентен курсору.
Основными интерфейсами набора строк являются интерфейсы 1йочг5е1, 1Ассеззог и 1Со!цтлз1п(о. Есть и другие интерфейсы, предоставляюшие различные дополнительные возможности. Объект Солпесйоп устанавливает соединение с поставщиком данных и источником данных, Соединения имеют режим изоляции. После того как соединение установлено, с его помощью можно создавать наборы записей (объект лесогб5е1) и команды (объект Сотталд).
Объект йесоЫ5е1 представляет курсор и имеет свойства СцгзогТуре и СосйТуре. Наборы записей можно создавать с помощью 50!— операторов. Для индивидуальной обработки полей набора записей используется коллекция ВеЫз объекта йесоЫ5ес. Коллекция Сггогз содержит сообщения об ошибках, произошедших в результате выполнения операции АРО.
Объект Сотталд используется для запуска параметризованных запросов или хранимых процедур. Введенные данные можно пересылать А5Р-странице на обработку посредством НТМ(.-тета ГОйг4. Обновления в таблицах производятся с помощью метода Орда1е объекта йесогд5е1, Вопросы! группы 1. Объясните, в чем состоит сложность окружения, в котором находятся теЬ- серверы. 2. Какова связь лгежду ОРВС, 01.Е РВ и АРО? 3.