Registreeri liikmeks  Login  
 Artikel


Veebistuudium - C#, XML, XML andmetüübi kasutamine
Programmeerimiskeel C# | Veebitehnoloogiad Vladimir Kjahrenov
 

XML dokumentide ja XML dokumendi osade hoidmiseks SQL Serveris saab kasutada xml andmetüüpi. Ühele väljale saab panna kuni 2GB XML andmeid. Vajadusel saab xml välja siduda ka schemaga, mille järgi väljale sisestatavat XMLi kontrollitakse.

 

Nt loome ühe lihtsa tabeli, mis koosneb võtmeväljast ning XML väljast:

CREATE TABLE xmlstuff(

      kood int IDENTITY(1,1) PRIMARY KEY,

      xmljutt xml NOT NULL,

)

 

Lisame sinna ka mõned read. All olevas näites on XMLi lühendatud. Terve lisatav XML on ära toodud eelmise peatüki näidetes ning ka järgmisel lehel olevas tabelis..

 

insert xmlstuff (xmljutt) VALUES(N'<tellimus klient="madis"><toode to... ')

insert xmlstuff (xmljutt) VALUES(N'<row klient="madis" toode="kala" h... ')

insert xmlstuff (xmljutt) VALUES(N'<tellimus TellimusID="1"><Klient>m... ')

 

Tulemuseks on meil 3 reaga XML tabel:

kood

Xmljutt

1

<tellimus klient="madis"><toode toode="kala" hind="55.0000" /><toode toode="kurk" hind="5.0000" /><toode toode="piim" hind="7.0000" /></tellimus><tellimus klient="jaan"><toode toode="kurk" hind="5.0000" /><toode toode="limonaad" hind="5.0000" /></tellimus><tellimus klient="anni"><toode toode="kapsas" hind="5.0000" /><toode toode="õun" hind="10.0000" /></tellimus>

2

<row klient="madis" toode="kala" hind="55.0000" /><row klient="madis" toode="kurk" hind="5.0000" /><row klient="madis" toode="piim" hind="7.0000" /><row klient="jaan" toode="kurk" hind="5.0000" /><row klient="jaan" toode="limonaad" hind="5.0000" /><row klient="anni" toode="kapsas" hind="5.0000" /><row klient="anni" toode="õun" hind="10.0000" />

3

<tellimus tellimusid="1"><klient>madis</klient><tellitudtoode toodeid="1" toode="kala" hind="55.0000"/><tellitudtoode toodeid="2" toode="kurk" hind="5.0000"/><tellitudtoode toodeid="3" toode="piim" hind="7.0000"/></tellimus><tellimus tellimusid="2"><klient>jaan</klient><tellitudtoode toodeid="2" toode="kurk" hind="5.0000"/><tellitudtoode toodeid="4" toode="limonaad" hind="5.0000"/></tellimus><tellimus tellimusid="3"><klient>anni</klient><tellitudtoode toodeid="5" toode="kapsas" hind="5.0000"/><tellitudtoode toodeid="6" toode="õun" hind="10.0000"/></tellimus>

 

Kuigi meetodeid XMLi haldamiseks SQL Serveri enda vahenditega on mitmeid, vaatleme siinkohal vaid kahte. xml.query ja xml.exist. Need on xml andmetüübi meetodid, mis võimaldavad XML väljalt XPath päringute abil otsida sobivaid väärtuseid ning kontrollida, kas sellised väärtused on olemas.

 

Näide 1: toome välja kogu XML välja sisu, kui selles XMLis on juurelemendiks tellimus:

 

select kood, xmljutt.query('/') AS xmljutt

from xmlstuff

where xmljutt.exist('/tellimus') = 1

 

Tulemus on järgmine:

 

kood

Xmljutt

1

<tellimus klient="madis"><toode toode="kala" hind="55.0000" /><toode toode="kurk" hind="5.0000" /><toode toode="piim" hind="7.0000" /></tellimus><tellimus klient="jaan"><toode toode="kurk" hind="5.0000" /><toode toode="limonaad" hind="5.0000" /></tellimus><tellimus klient="anni"><toode toode="kapsas" hind="5.0000" /><toode toode="õun" hind="10.0000" /></tellimus>

3

<tellimus tellimusid="1"><klient>madis</klient><tellitudtoode toodeid="1" toode="kala" hind="55.0000"/><tellitudtoode toodeid="2" toode="kurk" hind="5.0000"/><tellitudtoode toodeid="3" toode="piim" hind="7.0000"/></tellimus><tellimus tellimusid="2"><klient>jaan</klient><tellitudtoode toodeid="2" toode="kurk" hind="5.0000"/><tellitudtoode toodeid="4" toode="limonaad" hind="5.0000"/></tellimus><tellimus tellimusid="3"><klient>anni</klient><tellitudtoode toodeid="5" toode="kapsas" hind="5.0000"/><tellitudtoode toodeid="6" toode="õun" hind="10.0000"/></tellimus>

 

Näide 2: toome välja XMLis oleva elemendi Klient sisu:

 

select kood, xmljutt.query('//klient') AS xmljutt

from xmlstuff

where xmljutt.exist('//klient') = 1

 

Tulemus on järgmine:

 

kood

Xmljutt

3

<klient>madis</klient><klient>jaan</klient><klient>anni</klient>

 

Näide 3: toome välja XMLis sisalduvad tooted

 

select kood, xmljutt.query('//toode') AS xmljutt

from xmlstuff

where xmljutt.exist('//toode') = 1

 

kood

Xmljutt

1

<toode toode="kala" hind="55.0000" /><toode toode="kurk" hind="5.0000" /><toode toode="piim" hind="7.0000" /><toode toode="kurk" hind="5.0000" /><toode toode="limonaad" hind="5.0000" /><toode toode="kapsas" hind="5.0000" /><toode toode="õun" hind="10.0000" />

 

Näide 4: jätame toodetest nähtavale vaid need, mille hind on vähemalt 10:

 

select kood, xmljutt.query('//toode[@hind >= 10]') AS xmljutt

from xmlstuff

where xmljutt.exist('//toode') = 1

 

kood

Xmljutt

1

<toode toode="kala" hind="55.0000" /><toode toode="õun" hind="10.0000" />

 

 

 


PS! Kui sul tekkis artiklit lugedes küsimusi või kommentaare, siis palun esita need XML foorumisse


Lisatud : 16.03.2007 17:43:23
Hinne : 3,00 (0)
Vaadatud : 294
Heaks kiidetud : Vladimir Kjahrenov


Kommentaarid (0) 

  

  Hinda...
 

Viimased kommentaarid


 
  Et saaksid kommenteerida pead Sa olema sisse loginud.

   1.11.2007 6:49:51
  Saada kommentaar
  

Kõik õigused kaitstud. ENETA © 2005-2006   Terms Of Use  Privacy Statement
DotNetNuke® is copyright 2002-2007 by Perpetual Motion Interactive Systems Inc.