HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

MS SQL Server 2000 XML funkcióit támogató .NET névtér


Példaprogram letöltése

9977 bájt

A Microsoft elkészítette, és elérhetővé tette új, az MS SQL Server 2000 XML-t támogató funkcionalitásához igazodó névterét, melyet a NET Framework 1.1-es verziója már tartalmazni fog. Cikkünkben adunk egy rövid ismertetést az új csomag lehetőségeiről, valamint egy példán keresztül bemutatjuk, hogyan lehet a névtér osztályait felhasználni adataink közvetlen módosítására.

A példához szükséges a XmlDb adatbázis, melyet a mellékelt resources mappában lévő XmlDb.sql parancsállomány lefuttatásával hozhatunk létre. Az XmlDb.sql script 5. sorában adja meg helyesen a létrehozandó adatbázisfájlok mappájának nevét és elérési útvonalát.
A program fordítása előtt referenciaként meg kell adni a felhasznált névteret. Ehhez válasszuk tehát Project - Add reference menüpontot, majd a megjelenő ablakban a .NET lapon keressük elő a Microsoft.Data.SqlXml elemet.
Áttekintés
A Microsoft által elkészített névtér a Microsoft.Data.SqlXml nevet viseli, és cikkünk írásakor a következő Webcímen volt elérhető, mely természetesen megváltozhatott: http://msdn.microsoft.com/code/default.asp?url=/code/sample.asp?url=/msdn-files/027/001/824/msdncompositedoc.xml&frame=true.
Letöltve az állományt (sqlxml.msi) telepítenünk kell a .NET Framework alá. Az öntelepítő állomány erről gondoskodik, a használható .DLL állomány (Microsoft.Data.SqlXml.dll) alapértelmezésben a következő mappába kerül: %winroot%:\Program Files\SQLXML 3.0\bin\. Az MS SQL Server 2000 IIS-t konfiguráló, új beépülő modulját a %winroot%:\Program Files\SQLXML 3.0\ helyen érhetjük el. Ennek segítségével hozhatunk létre XML-t támogató virtuális könyvtárat Web-szerverünkön.
A telepített assembly bekerül a globális assembly listába, így amikor referenciaként megadjuk alkalmazásainkban, akkor a globális palettáról kell kiválasztanunk, nem pedig valamilyen alternatív mappából.
Az új névtér egy szervizcsomag részeként vált most felhasználhatóvá, azonban néhány hiba kiküszöbölése mellett sok hasznos funkcióval gazdagodott. Az új elemek nagy hangsúlyt fektetnek arra, hogy adatainkat speciális felépítésű XML állomány felhasználásával érjük el, illetve módosítsuk.
Ez az állomány lehet egy XML séma, mely leírja az adott tábla szerkezetét. Ugyanakkor bevezetésre került az úgynevezett Updategram-ok, illetve DiffGram-ok felhasználásának lehetősége, melyek speciális Template állományok meghatározott funkcionalitással.
Felépítésük az XML állományok struktúráját követi, azonban kötött elemeik révén nemcsak a kapcsolódó adatforrás szerkezetét írják le, hanem tartalmaznak elemeket az adatok módosításának mikéntjére is. A következő kódrészlet egy Updategram lehetséges felépítését mutatja, melynek felhasználásával egy meghatározott adatbázis Customers táblájába tudunk beszúrni egy új rekordot az állományban megadott adatokkal:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
  <updg:sync >
    <updg:before>
    </updg:before>
    <updg:after>
      <Customers CustomerID="AAAAA" CompanyName="Bottom-Dollar Markets" />
    </updg:after>
  </updg:sync>
</ROOT>
Látható, hogy alapvetően három lényeges elemet tartalmaz. A <sync> elemek egy tranzakciónak felelnek meg, ebből több is lehet egy állományban. Köztük találunk párban egy <after> és egy <before> elemet. Az elvégzendő művelet attól függ, hogy milyen adatokat adunk meg ezekben, illetve melyet hagyjuk üresen.
Ha a <before> tagban megadott adatok alapján létező rekordot talál a feldolgozó, és az <after> tagban nem adunk meg semmit, akkor az adott rekord törlésre kerül.
Ha csak az <after> elemben adunk meg adatokat - ahogy példánkban tettük – és nem adunk meg semmit a <before> tagban, akkor INSERT művelet zajlik le a megadott adatokkal.
És természetesen, ha létező adatokra vonatkozó információkat adunk meg a két tagban, akkor az adott rekordon UPDATE művelet hajtódik végre.
A cikk következő szakaszában bemutatjuk, hogyan lehet a névtér osztályaival és egy XML séma felhasználásával adatbázisunk egy táblájának rekordjait módosítani.
Példaalkalmazás
A példában a program indulása után a Form-on elhelyezett szerkesztőmezőben meg kell adni, hogy mely SQL Server 2000 példányhoz kívánunk csatlakozni. A szerver nevének megadása után a Tábla feltöltése gombbal léphetünk kapcsolatba a kiszolgáló szerver-példánnyal. A szerverhez kapcsolódva elérjük a telepített XmlDb adatbázis Products tábláját. Az adatok lekérdezéséhez, és módosításához az alkalmazás mappájának /resources alkönyvtárában megtalálható ’MySchema.xml’ állományt használjuk.
Az állományban megadtuk a Products tábla szerkezetét, így a felhasznált objektum ebből olvassa ki a tábla rekordjainak értékét. Felépítése a következő:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Pr" sql:relation="Products" >
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Name"  
                     sql:field="Name" 
                     type="xsd:string" />         
      </xsd:sequence>
      <xsd:attribute name="ID" type="xsd:integer" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
A névtér elemeinek eléréséhez megadtuk a hivatkozást a névtérre, majd deklaráltunk néhány objektumot, melyekkel kapcsolódunk az adatbázishoz, és elvégezzük a módosító műveletet:
private SqlXmlCommand cmd;
private SqlXmlAdapter ad;
A Fill metódusba ágyaztuk a tábla feltöltésének kódját. Először megadtuk a kapcsolódáshoz szükséges adatokat:
cmd = new SqlXmlCommand("Provider=SQLOLEDB;Server=" + srvText.Text + ";database=XmlDb;Integrated Security=SSPI;");
Majd a SqlXmlCommand objektum property-jeit. Az XML állomány gyökérelemének nevét:
cmd.RootTag = "ROOT";
Megadjuk az XML állományban deklarált utasítás nevét:
cmd.CommandText = "Pr";
A végrehajtandó művelet típusát, mely sémák olvasása esetén XPath típusú:
cmd.CommandType = SqlXmlCommandType.XPath;
Megadjuk az XML állomány elérési útvonalát:
cmd.SchemaPath = Application.StartupPath + "\\resources\\MySchema.xml";
Létrehozunk egy DataSet objektumot az adatok tárolására:
ds = new DataSet();
Példányosítjuk az adaptert a feltöltéshez, majd a már ismert módon feltöltjük a DataSet objektumot:
ad = new SqlXmlAdapter(cmd);
ad.Fill(ds);
Az adatok módosításához a megadott nevet eltároljuk a DataSet megfelelő rekordjában felülírva a létező adatot:
DataRow row = ds.Tables[0].Rows[idCombo.SelectedIndex];
row["Name"] = nameText.Text;
Majd frissítjük az adatokat az adatbázisban:
ad.Update(ds);

Cikksorozat

#IDKategóriaCikk címeSorozat
2535C#Oracle adatbázis-elérés alapjai1. rész
2546C#SQL utasítások végrehajtása2. rész
2557C#Tárolt eljárások és függvények fejlesztése3. rész
2565C#Csomagok fejlesztése4. rész
2573C#Adatbázis triggerek fejlesztése5. rész
2581C#Kivételek kezelése PL/SQL-ben6. rész
3276C#Kurzorok deklarálása PL/SQL-ben7. rész
3297C#Tömb adattípus létrehozása és kezelése PL/SQL-ben8. rész
3326C#Adatbevitel tömb-adattípussal rendelkező oszlopokba9. rész
3357C#Adattárolás beágyazott tábla-típusú oszlopokban10. rész
3388C#Adatok beszúrása beágyazott táblákba11. rész
3418C#Index létrehozása PL/SQL-ben12. rész
3444C#Szekvenciák használata13. rész
3488C#Adatok betöltése állományokból14. rész
1765DelphiOracle adatbázis-elérés alapjai15. rész
1774DelphiSQL utasítások végrehajtása16. rész
1784DelphiTárolt eljárások és függvények fejlesztése17. rész
1794DelphiCsomagok fejlesztése18. rész
1803DelphiAdatbázis triggerek fejlesztése19. rész
1815DelphiKivételek kezelése PL/SQL-ben20. rész
3256DelphiKurzorok deklarálása PL/SQL-ben21. rész
3287DelphiTömb adattípus létrehozása és kezelése PL/SQL-ben22. rész
3318DelphiAdatbevitel tömb-adattípussal rendelkező oszlopokba23. rész
3348DelphiAdattárolás beágyazott tábla típusú oszlopokban24. rész
3377DelphiAdatok beszúrása beágyazott táblákba25. rész
3408DelphiIndex létrehozása PL/SQL-ben26. rész
3436DelphiSzekvenciák használata27. rész
3467DelphiAdatok betöltése állományokból28. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 96. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |