Теория и практика построения баз данных (1088289), страница 135
Текст из файла (страница 135)
"; 5тгтпд чаг!пзег(Епб = ")"; гз = втвт ехесите0иегу (чаг50(); шл11е (гз.пех(()) гези1т = зтвЫ ехеситецрбабе (чаг!пвегп5таг( + гз.деь5ьгтпд(!) + чаг!пвегтЕпб). /! Оцистка гз с1озе(): зтвп,с1озе() : сопл с1ове() геьигп ( 5иссевз ) сатсл (Ехсерттоп е) ( ге!игл ("Ехсерттоп. " + е ); чача Звгчвг Радев 629 </НЕАО> <ВООТ> </ГОКМ> </ВООТ> </НТМЕ> 628 Глава 16. иЕйВС, оача Яегчег Радев и МуВСС Процедура обновления реализована в методе под названием 1пвег!Оаеа. Этот метод идентичен методу 1пвегеоаеа в листинге 16.2 На рис. 16.4 показана форма, в которую вводятся данные нового клиента. НТМТ -страница для этой формы изображена в лпстинге 16.5.
Обратите внимание, что тег ГОКМ АСТ!ОИ имеет значение Сивйогпег1пвег!Оп1пдвеап)вр. Также обратите внимание, что текстовым полям даны имена печгИаппе, печгАгеооде, певьоса1ИищЬег и печчИай1опа!!йу. Это имеет значение, потому что при нажатии кнопки Абб Сипеогпег (Добавить клиента) странице Сивеоппег1пвегсов!пдвеап.)вр передаются параметры, содержащие эти имена. Как вы увидите, )ЯР может осуществлять привязку входных параметров к одноименным свойствам объекта, если это потребуется. Рис. 16.4. Вид в окне браузера формы Иечч Сивеогпег Листинг 16.5.
НТМЕ-код формы !Чечг Сив1огпег <НТМЕ> <НЕАО> <МЕТА НТТР-ЕОО!Ч-"Сап!ел!-Туре" СОИТЕИТ="Еехп/Ьтгп1"> .Т1ТЕЕ таЬ1е О пр1ау Гогп /т!ТЕЕ «Е!Ик КЕЕ=5ТУЕЕ5НЕЕТ НКЕГ-т05Р-5йу1ев свп" ТУРЕ=ьаехп/сев"> <ГОКМ МЕТИ!0="ропп" АСТ!ОИ="Сизповег1пвегпов1пдвеап Овр"> <Р><5ткоив>«ГОит со1ог=ригр!е тасе="" вппе=5>бпьвр: бпьвр: чпеи к1бде 6а11егу</ГОНТ></5ТКОИ6> <Р>впьпр впьзр; впьвр:<вегопд><топт со1ог="Пигр1е" тасе пппе="4"> Иен Сизеогпег Гога</топе /зпгопд>«Р Толп ппу1е="Ьас!дгоипб-со1ог. //ГОГ5ЕГ со1ог="тогевсдгееп" тасе>впьвр. Апьвр. Ъпьвр; Иаве:впозр;вповр; /Торт ГОИт псу!в=-ВАСКОКООИО-СОСОК //ГОГ5ЕГ бпЬпр апьвр; бпьвр; впьвр; впьвр впьвр; впьзр; впьзр; !пьер: бпьзр: бпьвр, Ъпьз р; ВпЬвр, впьзр: впЬвр: впЬвр бпозр; бпЬвр.
Апьзр. Вповр; впЬвр; апЬ р; бповр: </ГОНТ><!КРОТ пб=пенИаре пане=пеанаппе></Р> <Р>впьвр;<Топе в!у!е="Ьаспдгоипб-со1ог: /ТГОГ5ЕС" со1ог="тогевтдгееп" тасе>впьзр; впьвр впьзр ;Агеасобе<топ! веу1е="ьеседгоипб-со1ог; !1ГОГ5Еб">: впьзр; бпьвр; впьзр.</тапс>впьвр. Апьпр; ьпьвр; впьвр: апьвр; впьзр: впь р: 5 Ьпр; впопр; впЬвр; впевр; вповр: впЬпр вповр; впввр, впьвр: бпЬзр: </толп 1ИРОТ 1б=пенАгеаоабе пеппе=пенАгеаообе вппе="б" /Р> <Р>«тспт всу1е='Ьаседгоипб-со!ог: !гГОГ5ЕГ са1ог=",огезедгееп" гасе>$пьвр; впьзр. впьвр; Рьопе: бпввр: впьзр впьпр, Апьпр; Апьзр.
Апьпр; впьвр: Йпьзр; бпьзр; впьзр; впьвр: впьвр. Апьвр; впьпр; впьвр; бпьвр, впьвр Япьвр; Апьвр: Ъпьвр; бпьпр бпьвр: Апьвр: Апьвр: вповр; впьвр; </Топй><!КРОТ пб=пеиеоса1Ииньег паие=пенсоса1Ииньег 5ые="20">впьпр: Апьвр: $пьвр,впьпр;впьпр впьзр; впьвр; бпьпр </Р> «Р>впьпр; впьпр; впьзр; <торт впу1е="ьаспдгпипб-со1ог . //ГОГ5ЕГ со)ог"тогевсдгееп" тасе>иа11опа11еу от Агппвйв: впьпр. Апьпр: </топе>бпьзр, впьвр; <1ИРОТ пб-пенИаппопа11пу пеппе=пеинап1опа1пеу в1пе="17"></Р> <Р>впьпр;<ГОНТ псу1е="ВАСКОКООИО-СОСОК; //ГОГ5ЕС"> вповр; впвзр: бповр; /ГОИт бпЬвр; впЬвр; апЬвр: АпЬзр: .ГОИт веупе--ВАСКОКООИОСОЕОК: т/ГОГ5ЕС '> <1ИРОТ по="виьнпй! пане=виЬнпс1 Еуре=виьгапе чапче="Або Сиптоиег" >Впьвр; Апьзр; впьвр; <!КРОТ !б=гевее! пагпе=гепеп! суре=севе! ча1ие="Кезес Ча1иев" /ГОНТ></Р> Зача Яегчег Радев 631 // Очистка г5 с105е() 5сшт с105е() иладов><ение Р 630 Глава 16.
00ВС, Оача Яеачег Радев и ЕдуВОС Код )5Р-страницы Сцв!опаег1пвей05!пдВеап.)вр приведен в листинге 16.6. Важиую роль в этой странице играют два оператора: <Звр:ивеВеап ай="апвегь" с1а55' Сцвтошег[пвегтВеап"/> <Ззр:ветРгорегеу паше="1пвегт" ргорегту="*"/> Первый оператор дает компилятору)БР команду загрузить класс Сцетопаег1пвег[- Веап и связать его с имеием !пвег!. Чтобы это работало в Тощсат 3,1, в каталоге !ля[а[1-0[т/ччеЬаррз/КООТ/ЧЧЕВ-1МГ/с[азвев, где(пвтаймйг — это каталог, в котором устаиовлеи Тощсас, должна находиться скомпилированная версия класса )ача Ьеап под названием Сцзсопаег1пвет!Веап.с[авв, При стандартной установке с помощью утилитьс кРМ это будет каталог цвт/[оса[/)айаг!а-Жопасат/ччеЬаррв/КООТ/ЧЧЕВ-1МГ/с[аввев. Листинг 16.6. Страница Сцвтоглег[пвег[05[пдВеап )вр <!ООСТЧРЕ НТМЕ РОВС[С "-//МЗС//ОТО НТМЕ 4.0 Тгап51стопа1//ЕИ"> <! Ехашр1е от Оасаоаве Ассеез Тгош а ЗВР Раде <Ж[а раде ашрог"ь="Зача,вц1,*" Ж> <НТМС> <НЕАО> <ТПЕЕ>0рсатзпд 051пд а дача Веап</Т!ТСЕ> <МЕТА МАМЕ="ацецог" СОМТЕИТ="Оачтб Кгоепйе"> <МЕТА МАМЕ="Кеуиогбв" СОИТЕМТ=е05Р, 005С.
Оатаоаве Ассевв"> <метА ИАме= "безсг1рт[оп" СОИТЕИТ="Ап ехашр1е о[ зпчойапд а Ьеап апб бавр1аутпд гевц115."> <Е[МК КЕЕ=5ТЧЕЕ5НЕЕТ НКЕГ="05Р-5еу1ев.с55" ТУРЕ="теис/с55"> </НЕАО> <ВООТ> <НЗ>да!абазе Орбасе 051пд ЗОВЕ тгал а Зача Ваап</НЗ> <нз>Ргосе551пд пе чзеи й)оде сцзжошег !пвегт тог му500 Оасаьаве чг1</нз> <Звр:цвеВеап 10="1пзегт" с1а55="сцетошег[пвегсйеап" /> <)ер:еетргорегту паше="апеегт" ргорегту»"*" /> <Ж // Свойства класса были установлены предыдущии операторон, // теперь вызываеи класс, чтобы выполнить вставку 5ыг1пд гевц15=1пеегс.[пвегсдата[) ; ат [ге5011 .'= "5цссе55") ( // Выводии сообщение об ошибке и завершаеи процедуру оцт.
рю пе)п( "Ошибка" + ге501ь]; геьцгп; ) О Данные успешно добавлены в базу. Выеодии таблицу пересечений "ьгу ( // Загрузка драйзеров аОВС Марка Мэтьюса // С1аве.тогнаше[ "огд.д)с.лтл.шувц1.0г1чег") . пеи1паьапсе (); 55юпц сопп5 гзпд = "10Ьс:шувц1://1оса1Ьоет/" ч "чг1" + "?цеег=бК!"; соппест)оп сопл = Ог)чегмападег.десСоппесюоп (сопп5ьг1пд) // Соединяен таблицы С05ТОМЕК и АКТ[5Т через таблицу пересечений // Обзатите внииание на использование синонииов для С05ТОМЕЙ.Маше // и АЙТ[5Т Маше 55аеешепт втшт = сопл.сгеате51аташепь!) ; 5тг1пд чаг5ОЕ = "5ЕЕЕСТ С05ТОМЕК.Маше СцвтощЕГ. АКТ15Т.Маше Агтает, Мас)опа1ату "; Чаг50[ - чаг50 + "ГКОМ С05ТОМЕК.
С05ТОМЕК ЯЙТ15Т 1МТ, АКТ15Т чаг50[ = чаг500 + "МНЕКЕ С05ТОМЕК.Сцзьошег!0 = С05ТОМЕй АКТ[5Т [ИТ.Сцетошег[0 АМО ": чаг50! = чаг500 + "ЯКТ[5Т.Агтавт[0 = С05ТОМЕК АКТ15Т [МТ.Агезз[!О"; йевц115ет гв - зтшт.ехесцтебцегу(чаг500) ; КЕво115еСМетаОа!а гзМета = гв.дЕсиетаОата(): Ж> <ТАВЕЕ ВОЙОЕК=1 ВБСОЕОК=/ттГТТТТ СЕСЕЗРАС[ИО=5 ГООТ ГАСЕ="Аг1а1" СОСОК=(/000000> <САРТ!ОМ><В>Сцвтошегв апб [пееге555</В></САРТ!ОМ></ГОИТ> <ТНЕАО> <Тй><Ж 5тг1пд чагСо1Машез ="": 1пт чагСЬ1Соцпе - гвМета.деССо1цппСоцпт[) ; Гог (щт со1 =1: со1 <= чагСо1Соцпт: со1++) ( Ж><ТН ВЫСОКОЙ=ФсдсОсд ВОКОЕКСОЕОК=[[000000 »<ГОНТ 517Екй ГАСЕ ="Ягта1" СОСОК-(/000000 >Ж=гвиета.деССо1цшпМаше(со1)Ж></ГОНТ»5позр;</ТН> <Ж )Ж> </Тй> </ТНЕАО> <ТВООУ><Ж ыП11е (ге.пехт !)) ( Ж Тй ЧАЕ[ОН=ТОР Ж Тог С пт со1 = 1; со1 <= чагСЬ[Соцпс: со1 +) ( Ж> <ТО ВОКОЕКСОСОК=[[СОСОСО ГОНТ 5[7ЕГВ ГАСЕ="Аюа1" СОСОК=У000000 Ж=гз.де!5'ьгтпд(со1) Ж><ВК /ГОМТ /ТО Ж =гв.де555г[пд[со1)Ж><ВК></ГОНТ></ТО><Ж сатсн (С1аевиотГоцпбЕхсерт(оп е) ( оцт.рг)пь1п !"Огапчег Ехсерсзоп " и е); )Ж> </Тй> )ч(убей 2з~~~.'-:»ь.
>)тт)";, т) оч х) Листинг 16.6 (продолжение) т(« ';те т «лк л лй>т ~ нчл </ТВООТ> <теоот /ТРоот> </ТАВ(Е> </ВООЧ> </НТНС> 51г1 п9 гези1 (=1плег$.1пзегтоа1аО; МуЗСП. Ограничения МуЗОЕ 632 Глава 16. йОВС, вача Яегчег Раоев и МуЯОС Второй оператор предписывает синтаксическому анализатору)БР устанавливать свойства класса с использованием входных параметров формы. Символ «*» сигнализирует о том, что все свойства должны быть привязаны к одноименным параметрам.
Этот короткий оператор заменяет собой следующую последовательность операторов: <Олргзе Ргореггу лал)е="1пзег " ргорег1у="пенуа1ие" ча1ие='<Ф= гециез(.де(рагавееег("пеияаве")Х>'/> <озр.летРгорег1у паве="1пзег1" ргорег1у="печ/Агеаооое" ча1ие= <Ж= гециез(.ое(Рагаветег("пендгеаооое")Ж>'/> <)зр:зегргорег(у паве="1пзегс" ргорег1у="пеьСоса1)(и/лЬег" ча1ие='<Ж= гециез1 Ве1Рагаве(ег("пенСоса1)(ивЬег")Ж>'/> <Оар:5етРгорег".у паве- 1плег1 ргорегчу="пенва11опа111у" ча1ие='<Ж= гециезт ВетРагаее(ег("пеняав1опа11ьу" Л>'/> Разумеется, можно использовать обе версии.
На самом деле длинную версию использовать необходимо, если имена параметров формы отличаются от имен свойств объекта. В листинге 16.6 метод 1пзег(оа(а вызывается при помощи следующей строки: Если метод возвращает значение, отличное от 5иссезз, выводится сообщение об ошибке. В противном случае на экран выводится соединение таблиц С05ТОМЕК, С05ТОМЕй АКТ15Т 1йт и АКТ15Т аналогично тому, как это делается в листинге 16.1. Результат изображен на рпс.
16.5. Это было очень краткое введение в разработку ) 5Р-страниц. Многие вопросы остались за рамками нашего изложения. Подробнее о сервлетах и )ача Бегчег Радел можно прочитать в специальной литературе. Му5ЯŠ— это свободно распрос~раняемая СУБД с открытыми исходными текстами, работающая под управлением Е)шх, 1.ших и %'1пг(оччз.
Исходные тесты и бинарные файлы Му5О! можно загрузить с сайта Муб(тЕ по адресу Ь1(р://чччле.щузц(.соуп. Примеры атой главы запускались в Му5О) для 1лпих, но они будут работать и в других операционных системах. Рис. 1б.б. Результат вызова страницы Соз1олтег)лзеоиыливевл,)вр По состоянию на декабрь 2000 года плата за лицензию на установку Му5(11. не предусматривалась, кроме случаев встраиваяия ее в в коммерческое приложение.