[ Pobierz całość w formacie PDF ]
.DataSet.Tables(i).Columns.Count._ToString() & ""For j = 0 To xmldoc.DataSet.Tables(i).Columns.Count-1strOutput += "    " & _"ColumnName = """ & xmldoc.DataSet._Tables(i).Columns(j).ColumnName & ""," & _" type = " & xmldoc.DataSet.Tables(i)._Columns(j).DataType.ToString() & ""NextNextstrOutput += ""catch ex as ExceptionstrOutput = "Error accessing XML file"end tryoutput.Text = strOutputend subAnalizaListing rozpoczyna siê od stworzenia obiektu XmlDataDocument.Jednak zamiastwczytywaæ dane bezpoœrednio do tego dokumentu, s¹ one pobierane zapoœrednictwem metody ReadXml w³aœciwoœci DataSet (patrz wiersz 14.).Metoda ta,jak siê ju¿ wkrótce przekonasz, tworzy relacyjn¹ reprezentacje pobieranychinformacji.PrzejdŸmy na razie do wiersza 27.Rozpoczyna siê w nim pêtla for pobieraj¹cawszystkie tabele dostêpne w obiekcie DataSet.Dla ka¿dej z nich, wyœwietlanajest nazwa oraz iloœæ kolumn (patrz wiersze od 27.do 32.).Kolejna pêtla for(zapisana w wierszach od 34.do 40.) wyœwietla nazwy oraz typy danychposzczególnych kolumn dostêpnych w danej tabeli.Obiekt DataSet wie jakie typydanych reprezentuje ka¿da z kolumn tabeli, gdy¿ okreœla jej schemat napodstawie struktury danych.Jednak dziêki temu, ¿e u¿ywasz obiektu DataSet istnieje prostszy sposób nawykonanie tych samych czynnoœci.W wierszach od 17.do 22.informacje z obiektuDataSet s¹ wi¹zane z dwoma ró¿nymi elementami steruj¹cymi DataGridzdefiniowanymi na naszej przyk³adowej stronie (za chwilê dowiesz siê, dlaczegowykorzystywane s¹ dwa obiekty).Wyniki wykonania tej strony ASP.NETprzedstawi³em na rysunku 11.12Rysunek 11.12.Prezentacja relacyjnych danych XML przy wykorzystaniu obiektówXmlDataDocument oraz DataSetZaraz… ale na rysunku widoczne s¹ dwie tabele, a dysponujemy tylko jednymplikiem XML.Co siê zatem sta³o?Otó¿ œrodowisko.NET odczyta³a schemat XML i zauwa¿y³a, ¿e dane mog¹ zostaæprzedstawione w sposób relacyjny.Konkretnie rzecz bior¹c, wydzielone iumieszczone w odrêbnej tabeli zosta³y informacje o autorze.Œrodowisko.NETautomatycznie wygenerowa³a tak¿e kolumnê klucza obcego, która po³¹czy³a obietabele! W obu elementach kontrolnych DataGrid mo¿esz zobaczyæ daneprzedstawione w bardziej tradycyjny sposób.Ale w jaki sposób obiekt DataSet okreœli³ strukturê danych bez wykorzystaniaschematu? W rzeczywistoœci jest to ca³kiem proste:ka¿dy element zawieraj¹cy atrybuty staje siê tabel¹,ka¿dy element zawieraj¹cy inne elementy staje siê tabel¹,jeœli istnieje kilka (co najmniej dwa) elementy o tych samych nazwach, to staj¹siê one tabel¹,wszystkie elementy nale¿¹ce bezpoœrednio do g³Ã³wnego elementu pliku (jegobezpoœrednie elementy podrzêdne), staj¹ siê tabelami.Wszystkie pozosta³e dane staj¹ siê kolumnami.Po okreœleniu struktury, wszelkiedane XML odpowiadaj¹ce kolumnom zostaj¹ dodane do obiektu DataSet jako jegowiersze.Jednak czy w rzeczywistoœci s¹ to dane relacyjne? Co siê stanie gdy do plikuXML dodamy kolejny wêze³ book zawieraj¹cy informacje o autorze podane w jednymz ju¿ istniej¹cych wêz³Ã³w? Na rysunku 11.13 przedstawi³em dane jakie zostan¹wygenerowane w takiej sytuacji, w formie, w jakiej zosta³yby one zaprezentowaneprzez elementy kontrolne DataGrid.genrestyletitlebook_IdpricenovelhardcoverThe Handmaid’s Tale19.95novelpaperbackThe Poisonwood Bible111.99novelpaperbackThe Poisonwood Bible213.99first-namelast-namebook-IdMargaretAtwoodBarbaraKingsolver1BarbaraKingsolver2Rysunek 11.13.Dodawanie kolejnych danych relacyjnychO rany! Ale to przecie¿ nie jest to o co chodzi³o.Mechanizmy ASP.NET niewykry³y, ¿e istnieje ju¿ autor Barbara Kingsolver i doda³y nowy rekord dotabeli autorów.Próba stworzenia klucza g³Ã³wnego sk³adaj¹cego siê z kolumnfirst-name oraz last-name spowoduje wyst¹pienie b³êdów.Niestety nie maprostego sposobu rozwi¹zania tego problemu.Aby poprawnie dodaæ dane, koniecznaby by³a rêczna aktualizacja klucza g³Ã³wnego i usuniêcie niepotrzebnego wierszaz tabeli autorów.Jednak bez wzglêdu na to ograniczenie, mo¿liwoœæ reprezentacji danych w formieobiektów DataSet oraz w formie danych XML jest niezwykle przydatna i u¿yteczna.Informacje relacyjne mog¹ byæ tworzone w formie danych XML i przekazywane doobiektu DataSet w celu zapisania ich w bazie danych, lub w drugim kierunku —odczytane z bazy danych i zapisane w pliku XML w celu ich przes³ania.Zgodnie z tym czego dowiedzia³eœ siê w kilku ostatnich rozdzia³ach, zapisdanych w formie relacyjnej jest bardzo czêsto spotykan¹ i efektywn¹ metod¹reprezentacji informacji, a XML bez w¹tpienia doskonale siê do tego celunadaje.Po³¹czone mo¿liwoœci klas XmlDataDocument oraz DataSet umo¿liwiaj¹dostêp i operowanie na danych relacyjnych pochodz¹cych z dowolnego Ÿród³a.To nie jest ASP!Jeœli znasz tradycyjn¹ technologiê ASP, to informacje zawarte w tym rozdzialemog¹ stanowiæ dla Ciebie ca³kowit¹ nowoœæ, gdy¿ obs³uga jêzyka XML niemal wogóle nie by³a w niej dostêpna [ Pobierz caÅ‚ość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • orla.opx.pl