Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009

.pdf
Скачиваний:
4975
Добавлен:
14.05.2016
Размер:
14.64 Mб
Скачать

1 7. Публикация БД с использованием XML

673

}

s t m t . c l o s e Q ; c o n . c l o s e Q ;

} c a t c h ( S Q L E x c e p t i o n e x ) {

/ / Б л о к о б р а б о т к и о ш и б о к в ы п о л н е н и я S Q L - з а п р о с а

s e t E r r o r f ' S Q L E x c e p t i o n : " + e x ) ;

}

}

/ / Ф у н к ц и я p a i n t в ы з ы в а е т с я д л я р и с о в а н и я в н е ш н е г о в и д а а п п л е т а / / о т о б р а ж е н и я с о д е р ж и м о г о

p u b l i c s y n c h r o n i z e d v o i d p a i n t ( G r a p h i c s g ) {

/ / О т о б р а ж е н и е с т р о к и m e s s a g e в с л у ч а е е с л и в р е з у л ь т а т е в ы п о л н е н и я / / з а п р о с а в о з в р а щ а е т с я п у с т о й н а б о р д а н н ы х

g . d r a w S t r i n g ( m e s s a g e , 5, 5 0 ) ;

r e t u r n ;

}

/ / ф у н к ц и я и с п о л ь з у е т с я д л я в ы в о д а с о о б щ е н и я о б о ш и б к е p r i v a t e s y n c h r o n i z e d v o i d s e t E r r o r ( S t r i n g m e s s ) {

m e s s a g e = m e s s ; w o r k e r = null;

/ / В ы з о в ф у н к ц и и п е р е р и с о в к и а п п л е т а

r e p a i n t ( ) ;

}}

Сформированный XML документ размещается в файле с именем myNew.xml. Вид этого документа в окне обозревателя Internet Explorer приведен на рис. 17.3.

Напомним, что достоинством использования Java-aniuieTOB является высокая скорость их выполнения, поскольку апплеты хранятся в откомпилированном виде.

17.5. Размещение данных из XML-документа в базе данных

Размещение данных из XML-документа в базе данных некоторой СУБД представляет собой задачу, обратную по отношению к рассмотренной в предыдущем пункте. В этом случае требуется выполнить разбор XML-докумен- та, выделить в нем требуемые данные, установить соединение ODBC с заранее созданной базой данных и поместить в нее выделенные данные с помощью SQL-запроса.

22 Зак. 541

674

Часть 4. Публикация баз данных в Интернете

3 D : \ W I N D 0 W S \ j b p r o i e c t \ u n t i t l e d 3 \ m y N e w . x m l

- Microsoft Internet

ш

файл

Правка Диа Избранное Сервис

Справка

'

 

 

JЙДРес Щ

D:\WIND0WS\jbproiect\untitled3\myNew.xml

^ П е р е х о д | ] Ссылки у>\

 

 

 

 

ж |

<? x m l v e r s i o n = " 1 . 0 " ? >

-< n o t e b o o k >

-< A u t h o r L i s t >

- < A u t h o r I D = " 1 " >

<N a m e > S c o t t G u t h r i e < / N a m e >

<Y e a r B o r n > 1 9 7 5 < / Y e a r B o r n >

</ A u t h o r >

- < A u t h o r I D = " 2 " >

< N a m e > S h a m m a s , N a m i r C l e m e n t < / N a m e > < Y e a r B o r n > i 9 5 4 < / Y e a r B o r r i >

< / A u t h o r >

+ < A u t h o r I D = " 3 " > + < A u t h o r I D = " 4 " > + < A u t h o r I D = " 5 " >

f 1 ijJ§} Мой компьютер

Рис. 17.3. Вид XML-документа в окне обозревателя

Рассмотрим пример решения указанной задачи при следующих предположениях. Имеется XML-документ, вид которого в окне Internet Explorer приведен на рис. 17.4. Требуется выбрать данные о книгах (название — book и авторы — authors) из документа и поместить в таблицу базы данных Microsoft Access и в текстовый файл.

В качестве варианта решения рассмотрим создание приложения JAVA с использованием объектной модели документа DOM. В состав проекта приложения JAVA входят два пакета (package) whritedb2 из файлов ReadXML2.java и MyClass.java. В первом файле содержится исходный код вида:

p a c k a g e w h r i t e d b 2 ;

i m p o r t o r g . w 3 c . d o m . * ;

i m p o r t o r a c l e . x m l . p a r s e r . v 2 . * ; i m p o r t j a v a . i o . * ;

i m p o r t j a v a . n e t . * ; i m p o r t j a v a . s q l . * ; i m p o r t j a v a . u t i l . * ;

p u b l i c c l a s s R e a d X M L 2 { C o n n e c t i o n c o n ;

1 7. Публикация БД с использованием XML

675

•"5 C : \ J B u i l d e r 3 \ m y p r o j e c t s \ R e a d 2 X M L \ t e s t 3 . x m l - Microsoft Internet Explorer Ж Ю Е З Ф а й л Правка Вид Избранное Сервис Справка

j ЙАрес g ] С: VJ В uilder 3\mi»projects\R ead2XM L\test3. xml

< ? x m l v e r s i o n = " 1 . 0 " s t a n d a l o n e = "yes" ? > - < t r >

<td i d = " l " b o o k = " H T M L 4 . 0 " a u t h o r s = " A . M a t r o s o v , A . S e r g e e v ,

M . C h a y n i n " / >

 

 

 

 

<td

id = " 2 "

b o o k = " V i s u a l J A V A "

a u t h o r s = " M .

R i n e h a r t "

/ >

< t d i d = " 3 " b o o k = " M S A c c e s s " a u t h o r s = " R . G e n n i n g s " / >

<td

id = " 4 "

b o o k = " J a v a S c r i p t "

a u t h o r s = " J .

F r e n t z e n , H .

S o b o t k a '

</tr>

 

 

 

 

 

 

@ Готово

 

 

|

|

j j p Мой компьютер

^( ^ П е р е х о д j

J l l

/ >

j J

Рис. 17.4. Вид XML-докумен га в окне обозревателя

P r e p a r e d S t a t e m e n t s t m t ;

 

int c o u n t ;

 

p u b l i c R e a d X M L 2 ( ) {

 

S t r i n g u r l = " j d b c : o d b c : A c c T a b " ;

}

t r y { C l a s s . f o r N a m e ( " s u n . j d b c . o d b c . J d b c O d b c D r i v e r " ) ;

c a t c h ( j a v a . l a n g . C l a s s N o t F o u n d E x c e p t i o n e) {

 

S y s t e m . e r r . p r i n t ( " C l a s s N o t F o u n d E x c e p t i o n : ");

 

S y s t e m . e r r . p r i n t l n ( e . g e t M e s s a g e ( ) ) ; }

 

t r y {

 

c o n = D r i v e r M a n a g e r . g e t C o n n e c t i o n ( u r l ) ;

 

/ / П о д г о т о в к а ш а б л о н а д л я д о б а в л е н и я з а п и с и в б а з у д а н н ы х

 

s t m t = c o n . p r e p a r e S t a t e m e n t ( " i n s e r t i n t o A c c e s s T a b ( w 1 , w 2 ) v a l -

 

u e s ( ? , ? ) " ) ;

 

} c a t c h ( S Q L E x c e p t i o n e x ) {

 

S y s t e m . e r r . p r i n t l n ( " S Q L E x c e p t i o n : " + e x . g e t M e s s a g e ( ) ) ;

 

}

 

}

p u b l i c v o i d c o n v e r t X M L D a t a T o S t r i n g ( S t r i n g a X M L F i l e , S t r i n g a S a v e F i l e ) { D O M P a r s e r p a r s e r = n e w D O M P a r s e r Q ;

/ / Т е с т и р о в а н и е X M L - д о к у м е н т а н е в ы п о л н я е т с я p a r s e r . s e t V a l i d a t i o n M o d e ( f a l s e ) ;

/ / В ы х о д н о й п о т о к

676

Часть 4. Публикация баз данных в Интернете

P r i n t S t r e a m p s = null;

b y t e [ ] b = n e w b y t e [ 1 0 0 0 ] ;

try {

p s = n e w P r i n t S t r e a m ( n e w F i l e O u t p u t S t r e a m ( a S a v e F i l e ) ) ;

}

c a t c h ( l O E x c e p t i o n e ) {

S y s t e m . e r r . p r i n t l n f ' E x c e p t i o n : " + e . g e t M e s s a g e ( ) ) ;

}

/ / Р а з б о р Х М L - д о к у м е н т а t r y {

p a r s e r . p a r s e ( f i l e T o U R L ( a X M L F i l e ) ) ;

}

c a t c h ( j a v a . i o . l O E x c e p t i o n e x ) {

S y s t e m . o u t . p r i n t l n ( " E x c e p t i o n in u n P a r s e r ( S t r i n g m e s s a g e ) -

j a v a . i o . l O E x c e p t i o n is " + e x . g e t M e s s a g e Q ) ;

}

c a t c h ( o r g . x m l . s a x . S A X E x c e p t i o n e x ) {

S y s t e m . o u t . p r i n t l n ( " E x c e p t i o n in u n P a r s e r ( S t r i n g m e s s a g e ) -

o r g . x m l . s a x . S A X E x c e p t i o n is " + e x . g e t M e s s a g e ( ) ) ;

}

/ / П о л у ч е н и е д а н н ы х о т п а р с е р а , п е ч а т ь и с о х р а н е н и е X M L D o c u m e n t d o c = p a r s e r . g e t D o c u m e n t ( ) ;

E l e m e n t el = d o c . g e t D o c u m e n t E l e m e n t ( ) ;

/ / П о л у ч е н и е с п и с к а у з л о в с и м е н е м T D

N o d e L i s t n o d e L i s t T R = e l . g e t E l e m e n t s B y T a g N a m e ( " t d " ) ; S y s t e m . o u t . p r i n t l n ( " c o u n t = " + n o d e L i s t T R . g e t L e n g t h ( ) ) ; c o u n t = n o d e L i s t T R . g e t L e n g t h ( ) ;

/ / П е р е б о р в с е х у з л о в T D

f o r (int n = 0; n < n o d e L i s t T R . g e t L e n g t h ( ) ; n + + ) {

N o d e a t t r = n o d e L i s t T R . i t e m ( n ) ;

N a m e d N o d e M a p n n m = a t t r . g e t A t t r i b u t e s ( ) ;

/ / П о л у ч е н и е д а н н ы х с и м е н е м b o o k

N o d e n B o o k = n n m . g e t N a m e d l t e m f ' b o o k " ) ; / / П о л у ч е н и е д а н н ы х с и м е н е м a u t h o r s

N o d e n A u t h o r s = n n m . g e t N a m e d l t e m f ' a u t h o r s " ) ;

/ / П о л у ч е н и е з н а ч е н и й д а н н ы х с и м е н е м b o o k S t r i n g s 1 = ( S t r i n g ) n B o o k . g e t N o d e V a l u e ( ) ;

/ / s 1 . a d d E l e m e n t ( ( S t r i n g ) n B o o k . g e t N o d e V a l u e ( ) ) ;

1 7. Публикация БД с использованием XML

677

/ / П о л у ч е н и е з н а ч е н и й д а н н ы х с и м е н е м a u t h o r s S t r i n g s 2 = n A u t h o r s . g e t N o d e V a l u e ( ) ;

/ / s 2 . a d d E l e m e n t ( ( S t r i n g ) n A u t h o r s . g e t N o d e V a l u e ( ) ) ; t r y {

s t m t . s e t S t r i n g ( 1 , s 1 ) ; s t m t . s e t S t r i n g ( 2 , s 2 ) ;

/ / Д о б а в л е н и е з а п и с и в б а з у д а н н ы х int rs = s t m t . e x e c u t e U p d a t e ( ) ;

} c a t c h ( S Q L E x c e p t i o n e x ) {}

S t r i n g d a t a = s 1 + " \ r \ n " + s 2 ; S y s t e m . o u t . p r i n t l n ( d a t a ) ;

d a t a = d a t a + " V \ n " ; b = d a t a . g e t B y t e s ( ) ;

t r y {

/ / З а п и с ь д а н н ы х в в ы х о д н о й т е к с т о в ы й ф а й л

p s . w r i t e ( b ) ;

}

c a t c h ( l O E x c e p t i o n е ) {

S y s t e m . e r r . p r i n t l n ( " E x c e p t i o n : " + e . g e t M e s s a g e ( ) ) ;

}

}

p s . c l o s e ( ) ;

}

/ / П р е о б р а з о в а н и е и м е н и ф а й л а в U R L - ф о р м а т p r i v a t e U R L f i l e T o U R L ( S t r i n g a X M L F i l e ) {

File file = n e w F i l e ( a X M L F i l e ) ;

S t r i n g p a t h = f i l e . g e t A b s o l u t e P a t h Q ;

S t r i n g f S e p = S y s t e m . g e t P r o p e r t y ( " f i l e . s e p a r a t o r " ) ; if ( ( f S e p != null) & & ( f S e p . l e n g t h ( ) = = 1))

p a t h = p a t h . r e p l a c e ( f S e p . c h a r A t ( 0 ) , ' / ' ) ;

if ( ( p a t h . l e n g t h ( ) > 0 ) & & ( p a t h . c h a r A t ( O ) != ' / ' ) ) p a t h = ' / ' + p a t h ;

t r y {

r e t u r n n e w U R L f f i l e " , null, p a t h ) ;

}

c a t c h ( j a v a . n e t . M a l f o r m e d U R L E x c e p t i o n e ) {

/ / И с к л ю ч е н и е в о з н и к а е т , е с л и ф а й л о в ы й п р о т о к о л н е р а с п о з н а н t}h r o w n e w E r r o r ( " u n e x p e c t e d M a l f o r m e d U R L E x c e p t i o n " ) ;

}}

678

Часть 4. Публикация баз данных в Интернете

В файле MyClass.java. содержится следующий исходный код:

p a c k a g e w h r i t e d b 2 ;

i m p o r t j a v a . a w t . * ;

i m p o r t j a v a . a w t . e v e n t . * ; i m p o r t j a v a x . s w i n g . * ;

i m p o r t j a v a . s q l . * ; i m p o r t j a v a . u t i l . * ;

p u b l i c c l a s s M y C l a s s I { C o n n e c t i o n c o n ;

P r e p a r e d S t a t e m e n t s t m t ;

p u b l i c M y C l a s s I ( )

{

R e a d X M L 2 r e a d = n e w R e a d X M L 2 ( ) ;

r e a d . c o n v e r t X M L D a t a T o S t r i n g ( " t e s t 3 . x m l " , " t e s t 3 . t x t " ) ;

}

p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) { M y C l a s s I m y C l a s s I = n e w M y C l a s s I ();

m y C l a s s I . i n v o k e d S t a n d a l o n e = t r u e ;

}

p r i v a t e b o o l e a n i n v o k e d S t a n d a l o n e = f a l s e ;

}

С помощью класса R e a d X M L 2 выполняется получение данных из XMLфайла и запись их в таблицу A c c e s s T a b базы данных Microsoft Access dbook.mdb и в текстовый файл, при этом экземпляр названного класса не создается, а вызывается статическим методом c o n v e r t X M L D a t a T o S t r i n g . Добавление записей в таблицы выполняется с помощью строки кода int rs =

s t m t . e x e c u t e U p d a t e ( ) ; .

В классе MyClassI выполняется вызов метода convertXMLDataToStringQ объекта read класса R e a d X M L 2 , с помощью которого и выполняется решение нашей задачи. Создание объекта m y C l a s s I класса M y C l a s s I выполняется в классе m a i n . Вид выбранных из XML-документа текстовых данных в окне редактора Word Pad приведен на рис. 17.5.

Применительно к локальной базе данных Access для размещения в ней выбранных из XML-документа данных требуется установить псевдоним соединения с использованием Менеджера ODBC через панель управления Windows. С помощью псевдонима (в нашем случае AccTab) в приложении Java указывается база данных, с которой установлено соединение. В примере для этого используется строка кода S t r i n g u r l =

" j d b c : o d b c : A c c T a b " ; .

1 7. Публикация

БД с использованием

XML

679

|§jj l e s l 3 . l x l - Б л о к н о т

И

1=1 E l

Ф а й л

Правка Поуск

?

 

HTML 4.0

A.Matrosou, A.Sergeeu, M.Chaynin

Uisual JfiUA

M. Rinehart

MS Access

R. Gennings

JauaScript

J. Frentzen, H. Sobotka

л !

A

Рис. 17.5. Вид сформированных текстовых данных в окне редактора

Контрольные вопросы и задания

1.Укажите причины, достоинства и недостатки обработки данных XMLдокумента на сервере.

2.Назовите способы и средства, используемые для создания и обработки XML-документов.

3.Охарактеризуйте основные подходы, используемые для синтаксического анализа XML-доку ментов.

4.Опишите работу приведенного во втором разделе главы сценария на языке JScript для отображения XML-документа в окне обозревателя.

5.Охарактеризуйте состав HTML-доку мента, содержащего вызов Javaапплета, формирующего или обрабатывающего XML-документ.

6.Составьте сценарий на языке JScript для отображения созданного вами XML-документа в окне обозревателя с использованием объектной модели DOM.

7.Разработайте Java-апплет, выполняющий формирование XML-доку- мента на основе данных из произвольной базы данных СУБД Access.

8.Разработайте Java-anmieT, выполняющий размещение данных из XML-

документа в базе данных СУБД Access.

Литература

1.ВеберДж. Технология JavaO в подлиннике: Пер. с англ. СПб.: BHV —Санкт-

Петербург, 1999.

2.Ветер П. Языки программирования Java иJavaScript: Пер. с англ. ЛОРИ, 1998.

3.Матросов А. В., Сергеев А. О., Чаунин М. П. HTML 4.0. СПб.: БХВ — Санкт-

Петербург, 2000.

680

Часть 4. Публикация баз данных в Интернете

4.Коннолли Т., БеггК. Базы данных. Проектирование. Реализациям сопровождение. Теория и практика. — М.: Вильяме, 2003.

5. Мещеряков Е. В., Хомоненко А. Д. Публикация баз данных в Интернете. - СПб.: БХВ-Санкт-Петербург, 2001.

6.Питпс-Моулпшс Н., Кирк Ч. XML / Пер. с англ. — СПб.: BHV — Санкт-Петер- бург, 1999.

7.HaroldЕ. R. XML: Extensible Markup Language. - IDG Books Worldwide, 1998.

18. Публикация БД средствами Microsoft Access

681

18. Публикация БД средствами Microsoft Access

18.1. Характеристика вариантов публикации

При публикации БД в Интернете с помощью Microsoft Access 2000 можно создавать следующие три разновидности Web-страниц:

страницы доступа к данным;

серверные страницы; •статические файлы HTML.

Общие сведения о страницах доступа к данным приведены в подразделе 11.3.

Здесь лишь добавим, что они создаются как объекты базы данных, используемые для перехода к расположению соответствующего файла HTML. Чтобы сделать страницы доступа к данным доступными в Интернете, следует опубликовать их в панках Web или на Web-cepeepe и установить базу данных Access (или SQL Server) доступной пользователям страницы. Для просмотра данных страницы и взаимодействия с ними достаточно один раз загрузить страницу с Web-cepBepa в Wcb-обозреватель.

Серверные страницы (ASP или IDC/HTX) создают из таблиц, запросов и

форм. Серверные страницы используются, когда информация в БД часто изменяется. При этом связь с БД организуется с помощью ODBC-интерфейса в случае IDC/HTX-страниц или ADO-интерфейса в случае ASP-страниц.

Полученные выходные файлы формата ASP или IDC/HTX обрабатываются Web-сервером по запросу обозревателя. При каждом открытии или обновлении файла ASP или НТХ пользователем Web-обозрсватсля Web-cepeep ди- намически-создает файл HTML, а затем отправляет его Web-обозревателю.

Статические файлы HTML можно создавать из таблиц, запросов, форм и

отчетов. В Web-обозревателе отчеты отображаются в формате отчета, а таблицы, запросы и формы отображаются в формате таблиц. Статические файлы HTML используются для Web-обозревателей, поддерживающих HTML версии 3.2 и выше, при нечастом изменении данных. Чтобы сделать статические файлы HTML доступными в Интернете, следует опубликовать их в папках Web или на Web-сервере.

Для просмотра данных с помощью Web-обозревателя достаточно один раз загрузить статический файл HTML с Web-cepBepa. Статические файлы HTML содержат данные, полученные во время публикации файлов. Со статическим файлом HTML не связан ни один источник данных ODBC, поэтому при изменении данных нужно вновь экспортировать файлы для просмотра новых данных в обозревателе.

682

Часть 4. Публикация баз данных в Интернете

Серверные страницы (ASP или IDC/HTX) и статические файлы HTML создаются путем экспорта соответствующих объектов баз данных (таблиц, запросов, форм и отчетов), из которых они создаются. Делается это с помощью команды Экспорт (Export) меню Файл (File) после выбора нужного объекта базы данных.

1 8 . 2 . С т р а н и ц ы д о с т у п а к д а н н ы м

Основная часть страницы представляет собой основную часть макета стра-

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

ся один за другим в порядке следования их в источнике HTML. Положение элемента определяется предшествующим содержимым. При просмотре содержимое основной части упорядочивается по размеру окна Web-обозревателя.

Разделы используются для отображения текста, данных и панелей инстру-

ментов. Положение элементов в пределах раздела по умолчанию является абсолютным — фиксировано относительно верхнего и левого краев раздела.

Элементы управления с абсолютным положением внутри раздела остаются на том же месте и при изменении размеров окна обозревателя.

В зависимости от целей создания можно выделить три типа страниц доступа к данным, используемых для выполнения следующих действий:

•создание отчетов в интерактивном режиме;

ввод и редактирование данных;

наглядное отображение и анализ данных.

Для построения страниц доступа к данным используются различные компоненты. Для удобства просмотра страниц доступа к данным записи на них могут группироваться. Рассмотрим компоненты, используемые при создании

страниц доступа к данным, а также преимущества и технику группировки записей на страницах доступа к данным. Затем приведем краткую характеристику и особенности создания указанных типов страниц доступа к данным.

Компоненты страниц

Страница доступа к данным может включать различные компоненты в зависимости от цели ее создания. Поля и записи всегда входят в состав страницы доступа к данным, но представлены могут быть по-разному. К числу наиболее часто используемых компонентов страниц доступа к данным относятся следующие.

Текстовые поля или поля ввода служат для отображения существующих дан-

ных из базы данных или для ввода пользователем новых данных в базу данных.